I think that it (chosing between exception/default-to-identity vs. raising
an exception/returning an option) is all matter of convenience for the `usual'
case. The argument for toUpper being extended to the identity is that
often one wants to do that to strings (for case-insensitive comparisons for
example).
Clearly one can emulate either behavior from the other (at least with
isAlpha), so it really is just a matter of elegance and expediency.
(I have no strong argument which is better.)