This is defined in the Java Language Specification, section 15.25.2. The salient part is:
A compound assignment expression of
the form E1 op= E2 is equivalent to E1
= (T)((E1) op (E2)), where T is the type of E1, except that E1 is
evaluated only once.
That is, in your case the difference is the implicit type cast:
byte a = 100;
a += 1000; // compiles
a = a + 1000; // doesn't compile, because an int cannot be assigned to a byte.