How we arrange folks in the office is a constant challenge. It's basically an overconstrained problem. While at the main Microsoft campus it is a core part of their environment that everyone has an office to themselves, here at Ensemble we think it's more important to promote casual communication by typically putting people in 2 or 3 man offices. Who actually goes in which office, though, is where it gets tricky.
The main opposite forces are departmental... at the same time you want members of a department together (since they work together on tasks and can share knowledge) and mixed (so that cross-department communication is easier, and because it tends to not happen as much on its own requires more assistance). At the same time there is a tension to put people on the same task together, but this changes often more frequently than we want to juggle offices. Of course, as one of the leads on the team (and thus most directly charged with maintaining comms with the other departments), I want to be with the other leads, but at the same time I need to be in close touch with all the actual people I'm trying to coordinate (ie, the other programmers).
There's no perfect solution, of course. Bungie has an interesting arrangement, with more mobile desks in one large shared space, and tight noise controls -- it's like a library in there, very focused. But that would be a hard sell in our very, uh, "energetic" culture here.
Anyways, our team is growing again and we're both figuring out where to put new people, and trying to troubleshoot our existing processes. As tasks ebb and flow different departments need more or less communciation, that sort of thing. Ensemble certainly doesn't get everything right first time, but I really like that as a culture we are committed to constantly trying to self-assess and improve...