[Question] When is pair-programming superior to regular programming?

When do­ing soft­ware de­vel­op­ment there are many choices that can af­fect your pro­duc­tivity. There are choices about how a com­pany works. One of those is do­ing pair-pro­gram­ming over do­ing solo-pro­gram­ming. We re­cently had a con­sul­tant at our com­pany who claimed that pair-pro­gram­ming is proven to be bet­ter but who couldn’t point to ev­i­dence.

How does the case for pair-pro­gram­ming look like? What do we know? How can we ra­tio­nally think about the ques­tion?