Não.
Mas por conveniência e regras de estilo, é sempre bom usá-lo.
(Se não me engano, ferramentas como o PMD e CheckStyle checam se você não se esqueceu de pôr o “break” no default).
A vantagem do enum é que parece complexo, mas não é tanto.
Principalmente quando vc começa a ter várias condições, para várias coisas diferentes, o que implicaria em ter vários switchs espalhados pelo código. No enum, tudo fica concentrado em um lugar só, o que deixa o sistema dezenas de vezes mais fácil de manter.
Ele é uma implementação “hardcored” do padrão Strategy. Fica fácil para converte-lo para classes normais, caso no futuro você queira fazer injeção de condições, por exemplo.
Eu prefiro usar o return pois quem está analisando o código não precisa continuar lendo para saber que aquilo é uma condição de saída. O return também evita identação desnecessária (que seria necessária se aquele if tivesse um else) e variáveis temporárias.
Mas claro, isso é questão de opinião, gosto e convenção. Use o que sua equipe decidir que é melhor.