De fato, ao fazer uma atribuição a um char onde ocorre a soma de um char com um int, ocorre um erro, porém, existe um jeito de burlar isto.
char valor = 65;
Os códigos abaixo são equivalentes:
valor = valor +1; // Dá erro
valor += 1; // Não dá erro
valor++; // Não dá erro
++valor; // não dá erro
O erro ocorre no momento que o sistema tenta fazer um calculo com char, pois o char possuí 2 valores, o valor numérico (65) e o valor literal (A), e o erro ocorre para indicar ao programador qual valor ele quer somar a 1, pois no caso do literal A, não é possível somar 1+A, mas o char pode armazenar um literal "1" por exemplo que pode ser convertido num int e finalmente somado a 1, neste caso 1+1 =2.
É isso mesmo? Ou estou errado? Porque a atribuição:
valor = 'A' + 1; // É permitido
E neste caso ambas as atribuição são permitidas: int valorInt = 'A' + 1;
char valorChar = 'A'+1;
Porém,
System.out.println(valor); // escreve 66
Mas,
System.out.println(valorChar); // escreve "B"