I’m not a fan of continuous paired programming. There are a few cases where it makes sense. (i) new employees, (ii) rookie programmers (iii) certain rapid development cycles. However, sustained two users and one keyboard is simply not practical unless it’s full contact MMA style.
There are a few other interesting offshoots. (a) Real-time file sharing (see subethaedit and coda) (b) splitting the coding into dev and test but coding in parallel and together. This can be even more fun when you add a third person who it structuring the module’s API signature while the others fill in the blanks.
Pair programming is not meant to be arm chair programming or back seat programming.