O tutorial oficial do Java sobre genéricos explica o apagamento de tipo e por que foi adicionado ao compilador:
Quando um tipo genérico é instanciado, o compilador converte esses tipos por uma técnica chamada apagamento de tipo - um processo em que o compilador remove todas as informações relacionadas aos parâmetros e argumentos de tipo em uma classe ou método. O apagamento de tipo permite que aplicativos Java que usam genéricos mantenham a compatibilidade binária com bibliotecas e aplicativos Java que foram criados antes dos genéricos.
Provavelmente era uma abordagem pragmática, ou talvez a menos dolorosa. No entanto, agora que os genéricos são amplamente suportados em todo o setor, o que pode ser feito para não precisarmos de apagamento de tipo? É possível sem precisar quebrar a compatibilidade com versões anteriores ou, se for possível, é prático?
A última declaração da citação acima se tornou auto-referencial? Ou seja: "apagamento de tipo permite que aplicativos Java que usam genéricos mantenham a compatibilidade binária com bibliotecas Java e aplicativos que foram criados com versões Java que executam apagamento de tipo".