The answer is here
From above link
Leveraging methods instead of Closure properties has some advantages:
- Memory efficient
- Allow use of stateless controllers (singleton scope)
- You can override actions from subclasses and call the overridden superclass method with super.actionName()
- Methods can be intercepted with standard proxying mechanisms, something that is complicated to do with Closures since they’re fields.
Also there’s a similar groovy question here that has some more details