Всё вполне ожидаемо, если почитать документацию:
Применяя арифметические операции к символам, PHP следует соглашениям, принятым в Perl, а не в C.
Например, в Perl выражение »Z»+1 вернёт »AA», если в C оно вернёт »[» ( ord(»Z») == 90, ord(»[») == 91 ).
Имейте ввиду, что символьная переменная может быть «повышена», но не «понижена». Поддерживаются только латинские символы из ASCII (a-z и A-Z).