Both of these ignore the obvious - you don't optimise on productivity locally you need to optimise on output of the system as a whole.
True, but in many cases, one good way to optimise the productivity of the system as a whole is exactly to optimize productivity locally.
Productivity of the system as a whole is significantly improved by communication.
Yes, but being in an office doesn't mean "no communication". Neither does being in an open environment guarantee effective, efficient communication.
Devs in offices may burn through a ton of tickets very productively achieving failure by building the wrong thing.
Same for devs in an open plan environment.