Isto ocorre porque a ordem de uma avaliação associativa é da direita para esquerda, e a ordem de uma avaliação de expressao é feito da esquerda para direita.
Lembrando também que em uma expressão os operadores (++,–) são feitos antes do operadores binarios (+,-,*,/,%,etc…).
Então,
a = a++; (avaliação associativa, resultado a = 1)
b = b++ + b; (avalia a expressão, sendo primeiro feito o incremento, depois a soma e então associa a b, resultado b = 3,)
Caso queira saber mais, procure pelo assunto Operadore Unarios, Binarios e Ordem de Avalição dos operandos em JAVA.
Qualquer duvida é só postar…