The addition of discontiguous spaces allows a proliferation of spaces without an unreasonable virtual memory overhead.
With the current design, the addition of each space can increase the complexity of a series of tests within MMTk. So this design is not really very scalable (see MutatorContext.getSpaceFromAllocator(), for example).
Probably the right solution involves adding a new layer of abstraction which allows spaces which share behaviors to have a common test, thereby reducing the tests.