Setting a default parameter generates two methods:
String doSomething() { doSomething( 'Not working' ) }
String doSomething(String a) { a }
So try setting the no-arg function (as that's the one you're going to call:
Foo.metaClass.doSomething = { -> doSomething( 'Working' ) }