I've been involved with a shared Drupal hosting project with BCIT and BCCampus. Part of it is based on an easy way to create new Drupal sites via a web interface, complete with database creation and population, Drupal site directory creation and settings modification, symlink creation to make the site visible to Apache, and management of a Drupal Sites Manifest table to keep track of sites.
At first blush, it seems rather similar to both sympal_scripts and the Drupal 5 installer, except for the management of a sites manifest table, and creation of the symlink to expose the site to Apache in a shared setting.
I'm investigating ways to better integrate with either/both of those, but in the meantime, I've got a working Drupal module that will do the whole shooting match. Not everything is fully implemented yet, but I've got the various bits working as a Drupal module, and most of it working as a standalone PHP application.
Currently, it reads available database profile templates from a directory of .sql files created via mysqldump. It creates a new database on demand, and populates it with the contents of the specified profile.
Future versions will let you customize the admin user/pass, and create an additional user/pass at install time. I also need to add site decommissioning (freeze-dry to static html, delete database and site config directory, etc...)
Writing this module has been an interesting exercise in learning the Drupal forms API and module programming in general. I've had a few false starts on both fronts, but think I finally grokked it this time. This is the only real code I've written in something like 6 months. Yikes.
Provisionator (alpha)
Update: We've committed to sharing this openly, so I'll be cleaning it up a bit and setting up a project on Drupal.org so others can play with it if they like. I'll likely wait until after the Drupal.org project reorganization though.