As far as I understand it is still compile time checked, hence it is a form of static polymorphism. The fact it is still runtime dispatched it is just an implementation choice.
Actually historically most generic implementations do not monomorphize either except as an optimisation: Java, C# (at least for complex types), most functional languages use some sort of type erasure. C++ and, I think, ADA were the exceptions, although it has proven more popular with newer languages.
It’s seems like a static polymorphism but not monomorphism, which also is implemented in Go generics but for simple types.