Hola camoay, se nota que has trabajado el código y le has dedicado tiempo, pero hay cosas que habría que mejorar.
La primera cuestión es que al declarar HashSet<String> miHashSet = new HashSet<String>(); estás declarando tipo estático y dinámico HashSet
Lo mejor para trabajar realmente con polimorfismo es declarar el tipo estático el de la interface y el dinámico el de la clase, en este caso sería Set<String> miHashSet = new HashSet<String>();
El otro problema es que tu código es de propósito específico, es decir, no resuelve el problema general de tener varios Set dentro de una colección y poder mostrar sus elementos, sino solo el caso particular del ejercicio.
Normalmente debemos programar buscando generalizar, no casos específicos.
Fíjate en la solución de este ejercicio y compárala con tu solución para ver estas cuestiones:
https://www.aprenderaprogramar.com/foros/index.php?topic=2384.0Saludos