I decided to have another look at this problem and I was able to get a fix.
The main thing that I did was add a new partition-type for the groovy content assistant so that it now works on multi-line strings. I know I tried this in the past, but discarded the idea since the Eclipse manifest builder will log an error in the content assist plugin's plugin.xml file. Even though the error is there, the content assistant still behaves properly. This is because I am already hacking the partition provider to include multi-line strings (the problem is that the PDE builder doesn't know about this). So, I abandoned the idea because of a validation error, and never knew that things would work even with the validation error.
In order to avoid getting a pesky error marker in the plugin.xml, I had to remove the manifest builder from the project (and hence no more validation of plugin related things in org.codehaus.groovy.eclipse.codeassist.completion. This could come back to bite me later, but we'll see.
Since I was in this area anyway, I also added some checking such that if you are invoking content assist from inside of a GString, but not inside of a ${}, then no proposals appear.
Also, added regression tests for this area.
This would be very nice. What needs to happen here is that a new content type must be added to the document in the GroovyEditor. Then there must be a content assistant associated with that content type. Not impossible. I'll try to get to it for M2.