If you just want to program in c++ both Linux and OSX are a Unix based systems, and will allow you to write c++ code. Whatever you write using XCode or GCC on a Mac will still compile under Linux, as long as you don't start using OS specifix API calls. You don't need to go down the VM route.
I have both a Linux system and MacPro and also program professionally under Windows.
As I said it all depends on what you are intending to do? Will you be writing GUI programs or just programs to run in ther terminal?
I just write terminal apps. It makes for good practice with algorithms, etc.. I develop professionally on POSIX-compatible systems and mess around at home in Ubuntu (or, I used to before getting a Mac).
What toolchain is bundled with XCode? (If it's GCC, my search will be over!)
I'm not particularly interested in an IDE, just getting my familiar terminal/toolchain available.
It depends on the version. The current stuff uses clang.
Vi is already installed, ships with the OS. But with Fink, you can install almost anything else. Fink and Macports install into a single directory (/sw and /opt/macports respectively I think, I stopped using Macports), so they're easy to remove. MacOS doesn't have an uninstaller.