I worked remotely for 1.5 years and loved it. I set up an office in my home, woke up in the morning and didn't have to drive to work and got to eat lunch with my family. This saved us a lot of money. Because of that I was in a sense earning more than I am currently. Likewise, I ended up working more hours and getting more done because I wasn't spending five hours a week driving and then getting settled into my office and I was more likely to work late on my projects after the family went to bed.
I will admit that there were some communication challenges.
If I called my team lead on the phone he was not always at his desk. I therefore didn't know if he was there at all, in a meeting, etc. I'd leave a message and he may not have returned my call for three hours which sometimes kept me from moving forward.
Thankfully I already knew their business well to allow me to run on my own but there were times where I needed to meet with my Team Lead to discuss specifications. It is difficult to draw up a blue print on paper over the phone.
I am self motivated but other remote developers were not. We had no guarantee that they were spending eight hours working on their tasks.
Sometimes remote developers were not in sync with the rest of the project plan so sometimes there were unnecessary iterations to get them on track.
I say all of that to say this: These issues aren't any different than working face to face. Every one of the listed issues is found in the local work place and it is too subjective to say it is easier in the work place than remotely. All points above occurred in the same manner whether at work or outside of it.
Take for example problem one. In the office I may have sat five cubicles away from my Team Lead. If I had a question I would've sat up from my desk and walked to his cube. It takes less time to pick up a phone that's next to me to call. Likewise, if he was in a meeting while I was there, I would still have to wait for him to get back from his meeting or whatever else.
Problem two is a little more challenging to justify but with Skype, Collaboration Software, etc, this is definitely doable.
Three and four are problems in communication and understanding in general. These are operational issues that exist locally or remotely and in each environment they require innovative forms of leadership.
I would add a couple of things to this mix and that is cost. If a techie is in the office they will be using electricity to run their computer and cubical lights, run water for drinking or flushing the toilet, they will chit-chat with co-workers, wear down carpet, spread illness, etc, etc. If five developers are not at work, it would be interesting to determine the cost savings in areas like this.