Let's boil down your requirements:
- For every script, be able to vary its configuration for each virtual host.
- Manage as few files as possible.
- Prevent users of different virtual hosts from changing each other's files.
With that set of requirements, you seem to have the best solution: a default config for each script, with the ability to override it for each virtual host. The only thing I could add is that you may want to make the overriding more fine-grained. You could do this by converting the scripts to use a config system that supports option overriding, like
AppConfig, or you could generate the config files from simpler templates, so that the user managing a particular virtual host just fills out a form or something and your program generates the approriate script-specific configs.