You want a process (its code and data) to stay on one CPU as much as possible, because cache is local to each CPU, and performance is dependent on cache hits. Locality of reference plays a big part in answering your question - do I want a particular CPU juggling data from two completely unrelated contexts in its cache, or do I want the CPU dealing with information flow that it is highly optimized for, namely that with a high locality of reference.

Of course, I'm completely ignoring the issue of load balancing and assuming 100% busy virtual partitions here. Having a scheduler that can cooperate with other instances of itself would be interesting - something like a single system cluster.