O problema é que, no caso do método sobrecarregado, o comando getMethods() irá retornar pelo menos 2 objetos Method com o mesmo nome, mas com paramTypes diferentes.
O seu hashMap vai eliminar um desses objetos, pois a chave dele é o nome do método em letras minúsculas e esse nome irá se repetir.
Para comprovar isso, faça o seguinte teste, substitua o seu for por:
for ( int i = 0; i < metodos.length; i++ ) {
if (metodosRS.put(metodos[i].getName().toLowerCase(), metodos[i]) != null)
System.out.println("Método sobrescrito: " + method[i].getName());
}
Para resolver isso, crie uma classe imutável contendo o nome do método e os seus parâmetros e use essa classe como chave do seu map (lembre-se de sobrescrever equals e hashcode corretamente). Você também terá que salvar o tipo dos parâmetros em seu resultset.
Outra alternativa (na minha opinião a melhor) seria abandonar o hashmap e usar o método getMethod(String name, Class[] paramTypes) diretamente na classe.