Bem, nesse caso, você poderia utilizar o método estático reverse, da classe Collections, desde que converta seu array para uma List.
String frase = "Socorram-me, subi no ônibus em Marrocos";
List<String> textoSeparado = Arrays.asList(frase.split(" "));
Collections.reverse(textoSeparado);
System.out.println(String.join(" ", textoSeparado));
Agora, comparando os dois algoritmos, o seu parece mais performático, já que não exige conversão de array para List (o que não parece tão grave), mas talvez a legibilidade do meu compense.