After trying a few packages, I chose ISPConfig. I liked the system for a number of reasons, including the above-mentioned ones (such as the developers' knee-jerk recommendation for users to run Debian, even though ISPConfig supports many Linux distributions), but what really impressed me was its polished nature.
ISPConfig is a free software version (Apache license) of the 42go commercial hosting control panel. This itself gives users the option of commercial support for ISPConfig from the developers.
ISPConfig isn't all things to all people. For example, Exim is not a supported MTA -- you have to use either Sendmail or Postfix. Likewise, for an FTP server, only ProFTP or vsftpd are recommended. To me, these weren't big issues, especially when viewing the overall install.
The recommended install on Debian is to follow a step-by-step "perfect server" setup, and then drop the package onto the newly configured box. This tactic works well, and I'm sure it saves the developers a ton of questions and problems.
ISPConfig uses an odd method of managing the control panel. During installation ISPConfig installs and compiles a full, new copy of Apache 2.x and PHP5 running on port 81 in either HTTP or HTTPS. This seemed strange to me at first but it has its advantages. The big advantage is that it isolates and modularizes the regular port 80 Web server from the system's control panel -- you can have two radically different configurations and you'd have to break two things to really screw things up.
You need to make a few other decisions: Do you use (A) regular GNU/Linux system users for everyone or (B) do you use virtual users? If (A), what happens when you have two "jsmith" users from different domains? If (B), what happens when a virtual user wants a shell/ssh account?
It is when thinking about these types of decisions that you really begin to appreciate the polish and thought that went into ISPConfig. The developers handle these issues both sanely and flexibly. For each of the various "I don't like this..." issues I've run into, on further reflection I can understand why things are the way they are.
So what do you get with ISPConfig? Full Web-based control to create and manage domains. This includes Web sites, subdomains, email, and FTP, complete and with disk and traffic quota support. Email includes spam and virus scanning, which can be done on a per-user basis. One of my favorites -- I've learned over the years to hate bind's config files -- is Web-based DNS handling, either on an automated basis when you create a domain or on a hand-created basis. (See the docs for more info.)
The system is a slick package. The only negatives I have about it aren't really negatives. You may or may not like ISPConfig's decisions compared to some other package's decision set.
These decisions can rear themselves in different ways. For example, if you want a Web-based email system for all users of all domains, ISPConfig only supports Uebimiau. If you're committed to SquirrelMail or Horde or some other program, that would have to be installed on an individual domain basis. The same goes for things like MailMan or other mailing list managers.
Overall, I've been quite pleased with ISPConfig. The developers are very active in supporting the system and they have an unusual amount of patience in dealing with newbies asking simple questions about complex server issues. The ISPConfig community is quite active and is both friendly and helpful.
As I said at the beginning of this, I did a good bit of research into control panels before going with ISPConfig. I'm happy enough that I've installed it on a box in my LAN that is not facing the Internet as well -- ISPConfig is really handy for whipping up "test domains" in a prototype LAN environment.