I think the biggest productivity spike comes from removing "other people" from the room where programmers are.
Mixing people on a maker's schedule with those on a manager's schedule is never going to work. Also don't mix people who need to think with people who need to talk on the phone.
On one project we started in a large, but private room. Each programmer staked out their own space. Might as well have been separate offices. About 8 weeks into the project, we rearranged the desks into a circle, facing out. Relevant communication increased massively. I was aware of exactly what my colleagues were working on all the time (yet still able to focus on my own tasks). Yes, there were times when someone would interrupt me when I had a complex problem gelling in my mind, but it was offset by having the required expertise for the entire product immediately available.
From personal experience, we have a team of programmers all from the same group working in an isolated area. At some point a secretary for some unrelated manager was seated among us at it became a huge destruction. By the nature of here work, she was constantly talking on the phone of having her phone ring.
Exactly. Which is why I don't see much difference in most of the scenarios jamieb describes, except for 5.
In our current office, we don't have the luxury of closed offices, but we do have separate spaces (kitchen, meeting room, small "lounge" room, hallway.) So the informal rule is: the big open room where everyone sits is on the maker's schedule, if you have to big discussions or use the phone, go elsewhere.
Works well enough most of the time. Of course it helps that there are very few non-programmers, and those are out of the office most of the time, so the open plan office is usually peaceful anyway.
Mixing people on a maker's schedule with those on a manager's schedule is never going to work. Also don't mix people who need to think with people who need to talk on the phone.