This also disables the transparency of the green cube.
Why should it? What has this cube to do with the ground? A setTransparency(-1); for the ground only should do it. If not, you can play around with Object3D.setSortOffset() to offset the ground in sorting so that it will always be drawn first.
Not using compile() will slow things down but other than that, it has no drawbacks (unless you want to use shaders, which you can't in that case).