状態を持ちたい訳ではないが全部関数の組み合わせにしたい訳ではない

何でもかんでもインスタンスを作る系統のオブジェクト指向は、本来持たなくても良い状態も持ってしまうコードを書きがちだしテストしにくいしデバッグしにくいので、基本的に参照透過な関数の組み合わせにするのが好きなのだけれども、そうはいってもArray.prototype.reverseのように、それ自身を起点とするデータの変更・修正・作成くらいはインスタンスメソッドとして提供した方が実際に(ECMAScript辺りの場合は)書くにあたっては楽な気がしているんだけど、ここらへんのバランス感って何か言語化されてないのかな