Returning a reference from assignment allows chaining:
a = b = c; // shorter than the equivalent "b = c; a = b;"
(This would also work (in most cases) if the operator returned a copy of the new value, but that's generally less efficient.)
We can't return a reference from arithmetic operations, since they produce a new value. The only (sensible) way to return a new value is to return it by value.
Returning a constant value, as your example does, prevents move semantics, so don't do that.