Your question is really two questions packed together.
The "mechanical" one is whether the observed behavior is intended (it follows specification, as - hopefully - stated somewhere in the documentation).
The "philosophical" question, even if you can find that the observed behavior is consistent with the documentation, is "why did Oracle make such a choice"?
I will leave the philosophical question aside; if I am going to object to Oracle design choices, I will start with empty strings being the same as
null (and not even applied consistently everywhere). Who knows why Oracle makes certain choices. Perhaps one group of programmers doesn't talk to another, and things get put together without enough thought to consistency. Or some other reason.
But the "mechanical" question has a simple answer. Whether it makes sense or not (probably not!), the choice is documented. If the format model has MM for month, but the actual value provided doesn't match MM, Oracle will also try MON. However, if the format model provided has MON for month, but the actual string value has the month in the MM format, then no attempt to identify the month will be made; instead, the function throws an error.
This is documented here: https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#g195479