Даже в Java этот код не будет выдавать никаких ошибок времени выполнения, поскольку нет проверки типов во время выполнения обобщений. Однако эквивалентный Java-код этой строке вызовет ошибку времени компиляции:
Test myTest = new Test(name:'test', numbers:myList)
хотя в Java можно сделать то же самое без ошибок во время компиляции, используя отражение и другие хитрости.
Краткий ответ, почему это не приводит к ошибке времени компиляции в Groovy, заключается в том, что проверки типов во время компиляции в Groovy намного слабее, чем в Java. Даже если универсальный тип не проверяется компилятором Groovy, он все равно полезен с точки зрения читабельности и документации.
как заставить какой-то тип использовать в списке?
AFAIK, нет способа сделать это в Groovy