Na verdade, não é bem uma pergunta aqui para o fórum, é mais um comentário. =)
Conforme outros tópicos já criados, o erro relatado no texto realmente não ocorre no código.
Entretanto, há outro problema no algoritmo: não são considerados caracteres com acentuação. Vi que "onibus" estava escrito sem o acento, e ao corrigir, isso faz com que o método não identifique o palíndromo. Além disso, não são consideradas vírgulas ou pontos finais.
Fiz esta alteração no código:
String fraseFiltrada = frase.toUpperCase().replace(" ", "").replace("-", "").replace(",", "").replace(".","");
//para remover acentos dos caracteres
fraseFiltrada = Normalizer.normalize(fraseFiltrada, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
Além disso, uma melhoria também pode ser feita: o FOR não precisa percorrer toda a string, somente a metade, senão estaremos duplicando as comparações a serem feitas.