I have been playing around with option 1 above. I have implemented a framework adapter hook that allows users to control which groovy version starts based on a system property passed into STS. So, the idea is to specify this either on the command line or in the STS.ini file:
(Leaving out the system property will ensure that things continue to behave as before.)
This is working for me in my runtime workspace, but I have no idea if this will work in a real workspace. I pushed out the changes so that we can get a build of this going and test it outside of a dev environment.
Peter, I wouldn't recommend trying this out yet. But, this does give us something to play with.