Compatibilidade.
Antes que os genéricos estivessem disponíveis, havia apenas get (Objeto o).
Se eles tivessem alterado esse método para obter (<K> o), isso teria potencialmente forçado a manutenção maciça de código para usuários java apenas para tornar o código de trabalho compilado novamente.
Eles poderiam ter introduzido um método adicional , digamos get_checked (<K> o) e reprovado o antigo método get (), para que houvesse um caminho de transição mais suave. Mas, por alguma razão, isso não foi feito. (A situação em que estamos agora é que você precisa instalar ferramentas como findBugs para verificar a compatibilidade de tipos entre o argumento get () e o tipo de chave declarada <K> do mapa.)
Os argumentos relativos à semântica de .equals () são falsos, eu acho. (Tecnicamente, eles estão corretos, mas ainda acho que são falsos. Nenhum designer em sã consciência jamais tornará o1.equals (o2) verdadeiro se o1 e o2 não tiverem nenhuma superclasse comum.)