Ruby の []= メソッドが呼び出し方によって戻り値が異なる

Ruby の []= メソッドは呼び出し方によって戻り値が変わるみたい。

class X
    def []= key, value
        key + value
    end
end

x = X.new
x["name"] = "homu"
# => "homu"

x.[]=("name", "homu")
# => "homu"

期待する結果としては key + value が返ってきて欲しいんですが、[key] = value という呼び出し方では右辺値が返ってきます。 []=(key, value) では期待する値が返ってきます。 [key] = value という呼び出し方は []=(key, value)シンタックスシュガーなはずなんですが、書き方によって結果が変わるのがちょっと困りますねぇ。