When launching a Maven build from a Jenkins Unix master to a remote Windows slave the command line is incorrectly built because the customtools-plugin decorates the Launcher and fails to pass through the Launcher.isUnix() call to the decoratee. The result is that the classpath uses a path separator of ':' rather than ';' and Maven fails to load with a NoClassDefFoundError.
The fix is simple. In com.cloudbees.jenkins.plugins.customtools.DecoratedLauncher just override the isUnix() call:
I'm not sure if there is a better way to do this in Jenkins. Decorating Launcher by subclassing in this way looks prone to this error if plugins fail to decorate all public methods. Perhaps Jenkins core offers a better approach?