The best method (for maximum sustained productivity) I've experienced is 2 developers to an office. For me, it's actually best if the developers aren't on the same team so they won't often interrupt each other. Either way is better than a cube farm and certainly open office. It's significantly cheaper than an office per developer, but nearly as good.
It's great to collaborate and all, but that should be done at a scheduled time in a scheduled place.
The negatives of open space is why libraries have a STFU rule.