I've no doubt that pair programming is a great way to spread knowledge around an organization. However my suspicion is that there's a much less sexy practice, also primarily promoted as a way to prevent defects, that could do the job much more efficiently: Regular code reviews.
I'm really only thinking that way for one simple reason: In pair programming, a normal conversation will involve only two people. That means that when a concept's being explained, it's being explained to only one other person. When a new idea's being vetted, it's being vetted by only one other person. When a future challenge is being considered, it's being considered by only one other person. That's always seemed horribly inefficient to me, considering that with a code review you could stick six people around a projector and achieve the same spread of information in as little as one fifth of the time.
That said, for other tasks such as getting new developers up to speed and integrated into the team I doubt there's anything better.