The main issue with pair programming as currently employed, by Thoughtworks and elsewhere is that it has become a base part of the cult of the extrovert currently rampaging through the industry.
Somewhere between 40 to 50% of people are naturally introverts. This is not the same as 'poor communication skills', and if that's what you believe, you are deluded about the way peoples minds work.
Introvert vs extrovert is an inate quality of a person, and doesn't change through their lifetime to any measurable degree. They may learn behaviours that change their outward, but internally, nothing changed.
So, pair programming, why is this bad?
Extroverts love pair programming because it enriches them, gives them strength.
Introverts find pair programming draining, it saps their mental energy. Simply because they fundamentally find peace in solace, not in social interaction.
Forcing pair programming all the time in a dev team is abusive towards introverts, and you will end up with a team that is made of extroverts after the introverts leave. In the extreme agile teams, this washing out is seen as a good thing, as the introverts aren't wanted. They are seen as inferior because of something innate, their introversion.
So, I'd say, pair programming as a developer discipline is good, I like it. It should not be enforced.
It is also not proven to give all the benefits that it is sold as giving. Groupthink is far too common in this kind of scenario. It may give you more standardisation and some aspects of quality, but it doesn't often give you the kind of extremely creative results that you get by sitting and thinking by yourself.
Brain storming has the same problems. Fundamentally, it doesn't work.
So, in summary. XP is good, pair programming has it's place, don't adopt anything religiously, go for a walk and think for a bit.
Your life as a developer will be that much richer.