現時点で rational.rb と complex.rb を残しているのは、それが無難だから
です。これは互換性を重視する立場から一応正当化され得ます。しかし、好ま
しくない点も引き継いでしまうかもしれません。

その気になれば、rational.rb、complex.rb のみならず、mathn.rb も丸ごと
削除することも可能でしょう。仮定の話ですが、これを考えることによって、
何が問題なのか判るかもしれません。

まず、rational.rb には、もはや大したものは残っていません。比較的意味が
あるのは、gcd (及び lcm と gcdlcm) です。

gcd があるのは、rational でつかう為です。石塚さんは、利用者がつかって
も構わない、と考えたと思いますが、基本的には rational でつかう為に存在
します。それ以外に、gcd が rational.rb にある理由はないでしょう。見た
ところ、この gcd はあまり関心を集めてはいないようです。

どれくらい関心がないかといえば、この gcd が話題になるのが、もっぱら 
rational の速度改善に関するに場合で、その為にかなり早い時期から gcd だ
けでも組み込みにしたらどうかという話は度々提案されてきたにも関わらず、
今日まで放置されているくらいです。

gcd については、捨てるか、ruby 本体に吸収するかどちらかになります (メ
ソッド形式か、関数形式かのいづれかで)。

complex.rb では、Math 関数の置き換えがあります。これはたぶん捨てられな
いと思います。

本体に吸収する場合いくつかの選択があると思います。たとえば、python な
どでは、math の他に、cmath があります。ruby でも、そのような形で取りこ
むことが可能でしょう。ただ、この場合、sqrt(aRational) をどこで引き受け
るのか、といったことが問題になるかもしれません。また、ruby の大クラス
主義 (クラスではないが) の風とも馴染まないかもしれません。

あるいは、(今現在 complex.rb を読み込んだときのように) Math の関数を置
き換えて、複素数域にまで拡大することも可能です。速度は若干遅くなるかも
しれません。ruby の Math モジュールは、Time と同様に ruby のおける 
Unix/C 主義の現れと思われるので、その正統性を維持しようとすると、この
手はつかえないかもしれません。

mathn では、** と sqrt を再定義してあり、石塚さん自らいわれるように、
なかなか複雑そうですが、** は複素数対応、sqrt は complex.rb でも再定義
していますが、mathn では有理数にも対応する、ということであると思います。
** と sqrt は存在意義が微妙すぎるので、いづれにしても mathn.rb からは
撤去するしかないと思います。

mathn.rb では、演算子 / の置き換えがありますが、この機能を ruby 本体に
組み込むことも可能ではないかと思います。ruby に、オプション m を追加し、
ruby -m とした場合は、mathn のように演算子を置き換えます。これは実装の
面でも都合がいいかもしれません (現段階では matrix のことは諦めなければ
なりません)。

mathn.rb では Prime もありますが、これは捨てるか、どこかに移す
(lib/prime.rb など) ことも可能だと思います。