Here, polymorphism applies to the "base" i.e. the collection class and not to the generic. If we compare this with polymorphism with arrays, then at runtime, JVM knows the type of arrays but in case of collection this information is not available because of type erasure. All the generic type info is removed during compilation.
Also, for arrays there is runtime exception - java.lang.ArraySortException available. Nothing of this sort in collections. So all checks are done at compile time.
Hence, at base type there can be polymorphism but not for generic type.