Indeed, you are asking too much from your database.
Databases are designed for DBAs and developers. Those are not the sort of persons who would usually consider that a..b = b..a in a context of a database or a program, and would naturally tend to put the minimum first, and the maximum second.
Probably for that reason, the designers of the database you are using considered that the inverse, that is a..b with a > b, constitutes an edge case which is not worth special treatment. After all, the goal of the database engine is to be hugely fast, and that means removing edge cases from the code.
Less code means less risks of an error within it, less debugging, less logging, less testing and, ultimately, less CPU cycles and memory usage.
If the same persons were designing not a database, but a product targeting ordinary users, they may have taken the opposite decision, considering that a simple user would consider that “a is between b and c” is exactly the same as “a is between c and b”.
How did they decide when creating the spec? Maybe they made an educated guess. Maybe they couldn't care less and considered that they don't want to write more code. Or maybe they actually observed programmers using their database engine, and determined that the frequency of the mistake you did is too small to care about. For the same reason, many databases ten years ago would respond faster to
select a, b from c than
select * from c, but this is not always true any longer: by watching thousands of programmers using
* when they shouldn't, designers of some database engines ended up handling this case specifically in order to give the same or very similar performance for both queries.