Very interesting presentation titled "Types Considered Harmful". Very worth reading the first half and conclusion, at least, if you don't feel like going through the language that is presented (called Boomerang).
TL;DR: Basically, the stronger the type system, the harder it gets to work with it.
Languages need to find a pragmatic middle path, so that types are precise enough to help improve the quality of our programs, but not too complicated so they don't get in the way of programming.
Slide 66 concludes that a mix of types (strong enough but not too complex) + contracts + unit tests will get you a long way towards better code quality, correctness, and ease of development.
Applied to Groovy, optional typing is nice in this respect, and if you combine that with power asserts or GContracts, and you test your code with unit tests, you end up with a good mix and have fun developing quality code that works correctly and is easier to write :-)