> false == Hoge.new
> => false

メソッド False#==(other) は自身のクラス TrueClass と引数 other のクラス Hoge が
同値でないから、false を返している

> Hoge.new == false
> =>true

メソッド Hoge#==(other) は(引数 other が何であれ)常に false オブジェクトを
返すよう定義されている

どこにもおかしな振る舞いは見当たらないけど、
もしも「右辺と左辺を取り替えて評価しても結果が同じになる」ことを期待しているならば、
>>660 におけるクラス Hoge の定義が間違っている、と言うしかないね