As mentioned below Screenhero is really great for 1v1s (they plan on adding team collaboration early this year).
For reference I wrote a post a while ago with some tools and methods we use at Catalyze. The only tools we've added to the list that aren't in this[2] post are trello and teamspeak.
2. http://m97.co/writing/working-remotely-as-a-designer.html
- less disruptive to others in an open space
- both have a good full screen view of the code
- both can use their second monitor to look things up or try something during the session
- it's easy to switch from one "master" computer to the other (eg. I fix something, commit, and we continue the session on the coworker's screen, on the environment he's comfortable with)
None of these things are exclusive to doing things remotely, but they're included by default.
While I prefer this for pair programming, I find coaching works best in person, where body language (understanding), off-screen talking and drawing stuff on a piece of paper, are more important.
This wouldn't work for folks who work in an IDE though, since it's terminal based.
One programmer shares screen with another programmer.
Both discuss what they are doing, what they should do.
One programmer codes. Another programmer monitors coding for bugs and sub-optimal implementation.
Communication tool: Skype (or possibly Google hangout?)