FogBugz does restrict the users you can see based on if you have permissions on any projects in common with each other user. You can sequester users from each other by use of Project permissions (including groups).
I realize that this is a lot less granular than being able to do so project by project, but the design challenges around figuring out the right, intuitive behavior are something we just haven't tackled yet.
If I change the project for a case and the assignee doesn't have permissions on that project, is the case unassigned from them? If so, does it go to the primary contact? Is that what the user expects? When/how do we tell them?
We tested this behavior and there was just no way to make it not frustrating or confusing for the user. So we reverted to our default, which is to accept user input in almost any situation, and deal with the ramifications later.
I can see where it would be valuable to at least gray out the people who don't have permissions to the currently selected project. Adding that functionality to our dropdowns, though, would be a nontrivial amount of developer time, and so must compete with other features as to the potential value delivered.
Update: FogBugz 8 revamped permissions to make management of permissions on large installations much easier. We still don't limit the assignable users to those who have permissions on the case.
Update: FogBugz 8.8 includes site admin notifications when cases are assigned to users who cannot see them.