Macports generally builds the latest version from source. I've had problems with a few things in the past needing manual patching, but overall I like it. You can keep multiple versions installed, but only one can be active at a time.
Fink downloads pre-built binaries, but AFAIR, it can build from source, too. It also has a GUI interface.
apt/dpkg is a better package management system. macports seems to have more recent packages, and a higher quantity, because building and updating a port is somewhat simpler and less resource intensive. I would choose a good package manager over the latest and greatest packages from a poor package manager every single time. So, I would choose fink, were I using a Mac (and when I've been charged with maintaining developer Macs in the past, I used fink, though I also experimented with darwinports, as it was called back then). Neither was great, since you still have to get fancy with paths and such in order to select between which versions of things to use, and header file paths can be a problem when building your own software, if you have the Apple developer tools installed, too. And, if you're distributing binaries, you have to be careful you're building against the libraries your users will have available. Developing on a Mac can be pretty painful in this regard.
This is one of the major reasons I need Linux for development instead of OS X or anything else. I tried Fink and Macports and got really frustrated with both.
I'm using a Mac and use Macports for almost everything. Fink was the best choice back on OS X 10.2 but MacPorts generally has the latest versions you'll be wanting to use. My hierarchy is usually /opt and then /usr/local for stuff I don't want the MacPorts version of.