Importance of pair-programming.

The idea of pair-programming makes sense for several reasons, first of all almost always when the developer "bounces" ideas against someone else, they end up thinking through the problem more carefully than a single person who would implement the first idea that comes to mind.
Secondly, the pair, when indoctrinated well cuts much less corners and the product quality increases.
Thirdly, when you loose a developer, and it is not always by "got hit by a bus" but sometimes a happy "got married and went for a honeymoon", then the other developer understands nuances of the project and can continue.
Finally, when you have a nice team, it is simply more fun to get together and solve the problems.
I have build very smart and effective teams in the past composed of senior and very junior members that did great work, enjoyed coming to work and did tours on local microbreweries together -- now, that is priceless.
Not all people like to work in pairs, my answer to that is, try to build teams composed of people who do. You will not regret loosing one loner mad scientist whose work might worked brilliantly, but whose code had to be re-writen anyway once he left.
Talking from experience. Good programers like to share and have fun while doing an awesome job.

Uki's Google Java Technology blog