Во-первых, обращаться с объектами хочется по интерфейсу — собственно на то он и нужен.
Во-вторых, если в процессе наследования перестать параметризоваться, то дальше не получится перекрывать этот метод, будет только перегрузка, которая возвращает нас к привидению типов и первому из предложенных мной вариантов.