You can still dynamically add workspaces, but IWorkspace is no longer automatically exported in TempHire. The change above is due to how the Navigator works in Cocktail 2. You no longer navigate to an instance of a ViewModel. You navigate to a ViewModel type.
So, therefore IWorkspace was changed to return the associated VM type for the navigator. Because I only have two workspaces in TempHire I decided to statically add them directly to the container instead of creating Workspace classes that are exported.
The workspace is basically just a lightweight proxy now that knows the type of the ViewModel that implements the actual workspace. The shell grabs the type from the Workspace and navigates to it, so the VM and all it's dependencies are not instantiate until you navigate to the workspace.
In your case you have to create a class for each workspace and export it as IWorkspace, so that it gets discovered when you load the xap.
So, for example I could have done the following instead of adding the home workspace via the CompositionBatch.
[Export(typeof(IWorkspace))]
public class HomeWorkspace : Workspace
{
public HomeWorkspace() : base("Home", true, 0, typeof (HomeViewModel))
{
}
}