A little background: I have been doing pair programming in Retailcommon (yroo.com) for more than 2 years, everyday.
When I started, there was only 1 pair, me and another developer. Since we have grown the team to 8 developers/4 pairs. Pairs are rotated every week where an incomplete task is left with one developer that was on it in the previous week and joined by a new developer.

Here are some of the pro’s:

1) Knowledge Transfer In Retailcommon, we have taken new hires and be able to get them caught up in 1-2 months. There is no separate training program.
The developer that was in the company longer will hand hold the new hire through a few features and by the end of it, they will end up with actual experience. Usual plan is start with Rails so a few features controllers/models for Rails. Once he/she is comfortable with Rails, we move on to Javascript/React for Frontend. Big features are susceptible of being a bus factor of 1. With pair programmer, all important features will have at least 2 developers.

2) Less Stress Yes, it’s actually hard to constantly talk with another person. But the opposite is also true, I have had experience where I was responsible for a feature alone, but I have no idea how to do it and all senior developers are too busy with their own work to give guidance. If you are working someone else, the responsibility of the feature is shared. It also does not so bad, if both developers don’t know how to accomplish a task.

3) Programming Faster Having someone to exchange ideas on how to approach a problem is very nice. Also when researching a problem like what API to use or library to use. It’s nice to have a second person researching (separately )the same thing so there is a less chance of finding the optimal solution. The person not on the keyboard (navigator) can look up how to do something if the driver does not know .