I found a very nice blog post about the penalty of multi-tasking here:

It is really hard to convience people about the penalty of multi-tasking and it is also a bad idea to isolate people, as teams works much better than individuals, but only if they can utilize their time without interrupting each other too much.

At one hand, you want everyone to know what others work on, you want them to discuss the architecture and get inspiration from each other, and at the same time you want them to avoid interruption and multi-tasking.
I found that if you place the team in a horse shoe shape back to back, it encourage them to interact much more – which is good, however it is also important that they don’t break too often.
A good way of working could be :
* morning meetings,
* if the team or part of the team want to continue to discuss a topic, they should use the time
* work until lunch and avoid interruptions
* after lunch you might have things part of the team need to talk about, and since lunch already interrupted the team, it is natural to put such a meeting after lunch
This is more or less what Scrum suggest, but it is really hard to stick to and I believe the team need help to stick to this, i.e. a team lead can highlight this to the team (write down observations and present it either at the morning meeting or at retrospective).
Cooperation is super important and gives a lot of value in complex projects, but it is always a trade-off, it is important to have the discipline both as a team and as an individual.

At the same time, I recomend people to use Pomodoro (I use to call it one-man Scrum), to get breaks into their work, again it is important that people don’t start something else, the best way for me to have a 5 min break is to go down the stairs (3 floors), outside the building and walk a short walk around the parking area and then back in, the risk is that you get into new interesting discussions if you go to the coffee machine etc…