Em vez de usar o Integer.compare, fiz o sort assim:
palavras.sort((s1, s2) -> s1.length() - s2.length());
Assim, vai retornar um número positivo se s1 for maior, negativo se o s2 for maior e zero se for igual.
Nesse caso, aqui deu certo, mas fiquei na dúvida se seria tão confiável quanto o Integer.compare, visto que é um método específico para esse tipo de comparação, seria melhor usá-lo?