Zur Frage, was man damit machen kann: ich habe einmal in ein System eine Jython-basierte Konsole eingebaut, so dass man zur Laufzeit z.B. Methoden aufrufen oder Variablen ausgeben konnte. Das war so eine Art Debugger und Low-Level-Admin-Konsole; man konnte einerseits im Entwicklungssystem Code testen, der noch nicht über die Oberfläche erreichbar war, andererseits konnte man das auch im Produktivbetrieb verwenden, um im echten System irgendwelche internen Zustände nachzuvollziehen. Man muss dabei natürlich im Auge behalten, dass man da sicherheitstechnisch betrachtet ein Scheunentor aufreisst...
In einem anderen Projekt habe ich Groovy zum Prototyping eingesetzt. Das System hatte eine Art Plugin-Mechanismus, wobei diese Plugins normalerweise in Java geschrieben und als Jar-Files ausgeliefert wurden. Alternativ konnte man das aber auch in Groovy machen, was den Vorteil hatte, auch mal eben im Rahmen einer Demo kleine Änderungen zu machen, ohne das ganze Build-/Deploy-Karussel zu drehen, oder auch nur den Server neu starten zu müssen. Nachteilig waren hier vor allen die fehlende Unterstützung von Java-5-Features sowie gewisse Performance-Probleme (beim Parsen der Groovy-Sourcen wurde aus irgendwelchen Gründen ständig wieder auf das Filesystem zugegriffen).
Ich bin mal gespannt, was sich jetzt mit dem JDK 1.6 tut, dort wird ja wohl eine Rhino-Engine als Referenzimplementierung des JDR 223 mitgeliefert; mal sehen, wie sich die anderen da behaupten können.