How do I change the default Space for an app in Mission Control?

You can do this from the dock.

Switch to the space you want to pin your app to, then access the options menu from its dock icon:

enter image description here


Right-click (control+click) on the dock icon, Options > Assign To


No longer possible with System Preferences

It seems impossible to use Mission Control or any other Apple-provided preference pane to change application—space bindings, or present an overview of bindings.

Using Terminal to view or change bindings

An overview of application—space bindings

Command:

defaults read com.apple.spaces

Where an application is listed without the UUID of a desktop space, this seems to mean desktop 1.

(I guess that the permanent desktop requires no UUID.)

Example

[macbookpro08-centrim:~] gjp22% defaults read com.apple.spaces
{
    "app-bindings" =     {
        "com.apple.preview" = "7EA54FE0-EB71-444A-8075-C6A2D7000305";
        "com.apple.safari" = AllSpaces;
        "com.barebones.textwrangler" = "";
    };
    spaces =     (
                {
            type = 0;
            uuid = "7EA54FE0-EB71-444A-8075-C6A2D7000305";
        },
                {
            type = 0;
            uuid = "CD0AFD50-7902-41EC-A4C4-C313B04CD2BB";
        }
    );
}

Considering the arrays in that example, I would not attempt to change or delete individual items within an array using Terminal alone. From the defaults(1) Mac OS X Manual Page:

… Defaults can be structured in very complex ways, making it difficult for the user to enter them with this command. …

A relatively fresh start

To delete bindings without losing spaces:

  1. quit everything other than Finder and Terminal

  2. in Terminal, command:

    defaults delete com.apple.spaces app-bindings
    
  3. make no attempt to use the Dock to set a binding

  4. log out.

Hint

If you use Dock too soon to set a binding, you may find that everything you deleted from preferences for Spaces is automatically rewritten to that preference file.

Information may be cached somewhere. I don't know where.

Dock menus accessibility

My experience of VoiceOver with Dock is that whilst Dock menus are accessible, the routine for changing a binding would be not particularly user-friendly.

Alternatives

There's scope for a third party developer to write an application, maybe a preference pane, for easier overview/management of bindings.