Of course a cheaper option is to allow remote working to those who want it, at least for most days of the week. Use the office for client meetings and the occasional get-together. That way I get to have my private office with a window, coffee machine, private snack bar, XBox console and anything else I want, and it doesn't cost you a penny.
Besides, groups of developers in large open source projects, distributed around the world, seem to manage fine.
On the other hand, being in the same room all day all week can be incredibly depressing. I've done it in the past and prefer any kind of office to working at home for extended periods.
Ensuring the code fits together is an activity that happens before you start coding. If a fellow programmer creates a function and then discusses with me how to integrate this, every single time, I'm not going to get any work done.
People can only work in groups when you divvy the work up between them, or if the group all focusses on one thing (one guy holds the fencepole up, the other whacks it with a hammer. One guy codes, the other guy checks the code. Etc).
The little full-on focus mode I get is spent on working out which code I need to put where. The remainder, simple code-monkey work, can be done in a normally focussed manner. Constant integration with everyone else's work destroys all focus.
The other point is that while an individual programmer might be more productive when he's alone in a room, a group might be more productive if they're all in the same room together. No point in having everyone write twice as much code per day if the code no longer fits together and nobody has any idea what everybody else is doing.
How much of a programmer's time is actually spent sitting down in full-on focus mode belting out lines of code?