Hi Will
Thanks for offering to help. According to Luke's analysis, the difference between JavaCompile and GroovyCompile is more likely to be due to whether or not we're forking the compilation with a daemon compiler. By default, we _do_ fork the compilation for GroovyCompile, but not for JavaCompile.
To understand how the Classloaders are configured for a daemon compiler, you'll want to take a look at DaemonGroovyCompiler and DaemonJavaCompiler: these classes provide the classpath for the compiler daemon, as well as any packages that should be shared between the compiler daemon and the compiler itself. Starting the daemon process is then performed by CompilerDaemonStarter.
Hope this helps you investigate further.
cheers
Daz