Это потому, что компилятор может проверить, что он ('a' + 10) находится в пределах символа, тогда как он не может (в общем) проверить, что 'a' + <an integer> находится в пределах.
'a' + 10
'a' + <an integer>