I think I just realized why there's this behavior.  Ruby supports this:

``` ruby
x = y = 3
```

Which creates two local variables (`x` and `y` and sets them both to `3`).  Fro consistency, it also supports this:

``` ruby
foo.x = bar.y = 3
```

...and for that to work, the `#y=` method _must_ return the assigned value.