漏れは、たとえば80っていうリテラルを変数にバインドしたとき、
timesRepeat: aBlock メッセージも factorial メッセージも受け取れて、
場合によってLargeIntegerを返したりするのは、メリットだと思う。
そこから導出したクラスで、番号なのか数なのか順序なのかはっきり
させるプログラミングのしかたも、結構好き。
でも、メリットを活かせない場面も、沢山ある。

たとえば、MD5の計算がクリティカルなのがあらかじめ予想できるなら、
おれははじめから速度が活かせる言語を選ぶし、3Dのポリゴンの描画
なら、はじめからSmalltalkでなんか書かない。
やってみて、数値演算がボトルネックになるから、そこだけ別の言語で
書きなおす、とかするくらいなら、はじめからC++とかで書くよ。

ボトルネックの特定は、たしかに重要なんだが、実行速度の最適化は
アルゴリズムでするのが定跡だろ。
細かい反論重ねるくらいなら、相対的に遅い事をさっさと認めて、
IntegerがObjectのサブクラスであるメリットについて、話しないか?