Conforme a documentação diz:
Não diz nada sobre a troca de start_expression e end_expression para corresponder aos valores mínimo e máximo. Você deve esperar o resultado conforme documentado, não como você acredita que deveria.
Para os curiosos, o padrão ANSI SQL99 especifica que o predicado BETWEEN deve incluir uma cláusula para comparação SYMMETRIC ou ASYMMETRIC. Apenas o SYMMETRIC tem permissão para trocar o start_range e end_range, o ASYMMETRIC deve ser estrito. A forma ASSIMÉTRICA é a forma implícita. Em outras palavras, uma implementação que interpreta
A BETWEEN X and Y
como (A>=X AND A<=Y) OR (A>=Y AND A<=X)
, como o OP sugere, não é compatível com o padrão.