Hi,
I'm also using a lot of script tasks in my apps. Since I foresaw much more script maintenance than changes in the processes themselves, I've decided early in the project to always run scripts from an external source (usually file system, but could be something else, like a JCR repository). In order to achieve this, I don't use "script tasks", but regular "service tasks" that always have a expression like this:
${scriptRunner.execute('scriptname',execution)}
In this expression, "scriptRunner" is a spring bean that loads a groovy script from a process-specific location (a folder named after the process definition key, in my case).
As soon as I have some time, I'll probably simplify this using the new process parsing hooks (section 18 of the user manual). The idea would be to inject this expression at load time and adopt a convention that the script always has the same name of the task itself.