JRubyをJSR223を使って呼び出す−解決編

というわけで解決いたしました。
・・・原因はこちらです。

ScriptEngineManager
public ScriptEngineManager(ClassLoader loader)
このコンストラクタは、サービスプロバイダ機構を使用して、
指定された ClassLoader に可視の ScriptEngineFactory の実装をロードします。

loader が null の場合、プラットフォームにバンドルされ、
通常の拡張ディレクトリ (インストール型拡張機能) に存在するスクリプトエンジンファクトリがロードされます。

パラメータ:
loader - スクリプトエンジンファクトリの検出に使用する ClassLoader。

http://java.sun.com/javase/ja/6/docs/ja/api/javax/script/ScriptEngineManager.html#ScriptEngineManager(java.lang.ClassLoader)

このコンストラクタで指定したClassLoader ですが、ScriptEngineの生成時には使用されますがそれ以降は使用されないのです。
えーって感じですよ、常識的に考えてここでClassLoader指定したら、そのScriptEngineで使用されれるClassLoaderまで影響範囲が及ぶかと思うじゃないですか。そんなカンチガイから生まれたバグでした。
結局・・・

  1. ClassLoaderが指定された時は、JRubyのクラスが見えるから問題なし
  2. 実行時などに必要なクラスを、カレントのClassLoaderから探そうとしてClassNotFoundException

というオチでした。

解決方法としては、スクリプト言語毎に実行用のスレッドを用意し、そのスレッドのClassLoaderを置き換えるという形で行いました。これで、GroovyとJRubyの両方が同時にテストが通るようになりました。