It's related to the right-associativity of the assignment operator and its expected semantics. If you write
a = b = c
then it is interpreted as a = (b = c)
When c = 5 then you expect that a = b = 5 # which is equivalent to a = (b = 5)
results in a and b set to 5. That's why = must return its right-hand side.