Take a look at the first lines of your default config file...
If you uncomment this code, you will get an external configuration which is read when the application starts.
So you will not have to recompile but to restart your application if the configuration changes. Since many admins restart the application server automatically over night, this shouldn't be a big problem, should it?
// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts
// grails.config.locations = [ "classpath:${appName}-config.properties",
// "classpath:${appName}-config.groovy",
// "file:${userHome}/.grails/${appName}-config.properties",
// "file:${userHome}/.grails/${appName}-config.groovy"]
// if(System.properties["${appName}.config.location"]) {
// grails.config.locations << "file:" + System.properties["${appName}.config.location"]
// }
In order to access the config from within /src/groovy take a look at this question: How to access Grails configuration in Grails 2.0?
btw: yes, the configurationHolder is deprecated, but it still works :-)