> 互換性についてはコードの変更で十分に担保できる（すべき）
それはコード全体に十分にいつでも目が届く＆全体に目を配るだけの余力があるという条件が整っている時にだけ言える事だと自分は考えています。

あと、本来であれば、ここは自動テストによってそのような動作が保証されていればどっちの戦略（引数を厳密に定義するか、rest argumentsで大雑把にやるか）を採っても問題のない箇所だと思います。なので、どっちを選ぶかという所に開発者のポリシーが反映されてきます。
僕は、メソッドの定義を見た時に「ああなるほど、全部の引数を渡して欲しいのだな」ということが一目で分かる状態である・コードがそのように語っている「べき」と考えているので、この手のコードを書く時はargumentsを多用していたという次第です。
（コメントを書かずにコードで意図を表現できるならそうする「べき」、というのが自分の考えです。）