Personally, I think it's a terrible approach to learning. What happens, often (not always), is that the more-experienced developer drives and the less-experienced developer watches, thinks they're taking it all in, tries to do it themselves later and fails.
And, stuck in that situation, it's very difficult to go back and say, "Yanno, I've forgotten all that already."
Different people learn in different ways, but I'm willing to bet that most programmers learn better if they're given information and room to fiddle and seek their own answers, but have someone to go to when at least it's clear what question they should be asking (if not the answer).
Pair-programming is best when done by two seniors, alternating the driving, discussing the work as they go along. There is very little training in pair-programming -- there is knowledge transfer, as pointed out in the comments, but of a different nature. It's just an extra pair of eyes and a brain that can focus on other things than typing.