The problem with Python is the default is untyped. I want gradual static typing for the code I write but that should be on top of a base of already well typed libraries. It's one reason I like Groovy - it's a language that lets you optionally and incrementally type
your code, but it sits within an ecosystem of mostly statically typed languages so you aren't fighting a massive legacy of culture and code that just doesn't care about declaring types.
Although Apache Groovy sits within an ecosystem of statically typed languages, Groovy itself has a long history of dynamic typing only. Its static typing was only introduced in version 2, and even then people don't use it very much -- Groovy's primary use is as a DSL specifying Gradle build scripts. Legacy Groovy code is typically littered with `def` and `{a, b-> ...}` everywhere.
Absolutely, most groovy code is written in the dynamic style. But it's still way better off than Python where that is true AND its true for all the libraries it uses. With Python you can add as many type hints as you want, you are still going to get stuck at the first call that reaches outside your own code where nobody cared about types. With Groovy that call is going into Java or typed GDK code 95% of the time (unless you are talking about Grails which I'm not a big fan of for that reason), and hence you have the benefit of 95% of code already being typed by default.
I think you're vastly underestimating what makes a script language "scripty" - not having to declare types is only one factor and probably not the most important.