I used an ExpandoMetaClass in the end (as there's no other option! . However I'm not totally happy with it - as it assumes that the user of your library is gonna call some magic install script in some place to make sure the methods get added. This is probably fine in lots of frameworks like Grails where there's already an initialization point - but in general, adding groovy methods to arbitrary code - we need some kinda auto-discovery way to find the expando-metaclass scripts.
Whether we use Java code as in my patch, or groovy and ExpandoMetaClass doesn't matter a whole lot - the main issue we need to address IMHO is adding an auto-discovery mechanism so we can by default add methods to new types by adding a jar to the classpath - without the user having to remember to call some initialization script