原です。

バグだと思うんですが、(また勘違いだったりして)

-----------^ test.rb
print "abc".sub(/b/){ "(#$&)" }, "\n"
print "ABC".sub(/B/){ "(#$&)" }, "\n"
-----------$ test.rb

というスクリプトを動かすと

-----------^
a()c
A(B)C
-----------$

と出力されます。最初の $& が展開されてないみたいです。
---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=--
                           Shin-ichro Hara(Nagaoka Univ.of Tech.)