In my experience: Solo is best when you are doing grunt work. If I can autopilot, then sure.
Pair is great for when you are starting out and implementing a complex feature or tool. We generally don't do a lot of actual coding (just structures and pseudocode), but will do a LOT of whiteboard drawing and talking through logic. Multiple brains are what you want at this stage, and if you have a co-worker who complements your thoughts well, you can do a lot of great work.
And for bug fixing, pair programming is hands down amazing.
Mob programming I personally dislike, but it has its uses. I would argue this also belongs more at the high level planning stage, but it can work well when you are adding a new feature where you would benefit from a few different disciplines.