スコープってあるじゃん。
なんで全部グローバル変数にしないかっていうと、
あるいはなぜグローバル変数を消極的に使うかっていうと、
プログラム全体に変数が散らばっていくのを避けるためだ。
頭が超良くて、どんなに複雑でも瞬時に理解できるノイマンみたいなやつだと、
グローバル変数多用しても、実は問題ないのかもしれない。
しかし脳が非力な一般人はそうはいかない。できるだけ複雑にしたくない。
変数がプログラム全体に晒されるようなこともしたくない。

OOP、ここで特にクラスベースのそれでは、privateなメンバ変数は、
クラスの中だけに隠しておくことができる。アクセスは局所化しうる。
従来のスコープという概念に加え、クラスの内外というレベルでの制限ができる。

とくに生存期間が中期、長期のものは、それが生きている間、
いろんな場所を渡り歩く間、ずっと隠されるメリットは大きい。
もしこれが丸出しだったら、デバッグ時、渡り歩く箇所全部がデバッグ対象となる。

変数が小さくアクセスされるようにするのが正義。
カプセル化のおいしさも、結局そこにあるんじゃないか。