One of the hardest things for developers is to stay focused and in the "zone". There is, of course, debate since this can't be scientifically proven but most people agree that it only takes a second to be snapped out of the zone but can take 15-30 minutes to get back in depending on the complexity of the task.
When developing there are hundreds of tiny details that you have to keep in short term memory for quick access; all of the variables and classes related to what your working on, how those classes interact with other objects, functions, the language API itself, etc. so keeping all of this at the forefront of your mind and not losing it is a very delicate task. It is your job to make it as easy as possible for your developers to maintain the concentration they need.
I highly recommend remote working since this allows the developer to work in whatever environment is most productive for him/her. Also, keep the emails, phone calls, etc. to a minimum unless it is a true emergency. I personally love Campfire, developers can keep it open and interact as needed but are instructed that anything in Campfire is not an emergency so it can wait. If there is an emergency you'll get an IM or call but on the average day you can focus when you need to and check in on Campfire to follow up when you're between tasks or need a break.