My hunch is that part of the efficacy of pair programming is down to the fact that it legitimises speaking your thoughts out loud as you code, bringing your assumptions and process to your own attention. (As well as the other more oft-related benefits of having someone else available to vet & supplement those things)