Wynika to z potrzeby enkapsulacji kodu. Najprostszy przykład: Jedziesz sobie samochodem z otwartym oknem i masz w ręku swoją ulubioną kanapkę. Nagle podjeżdża do Ciebie inny samochód, kierowca zabiera Ci ją właśnie wtedy, gdy chciałeś jej skosztować.
Ta paplanina nie bierze się znikąd. Już w latach 90' poprzedniego wieku było głośno o tym, żeby ukrywać informacje w modułach. Stosowanie globali powoduje to, że niesamowicie ciężko jest debugować kod w większej aplikacji, a jeszcze trudniej go testować. W przypadku globalnych zmiennych w językach obsługujących wątki, moga występować wszelakiego rodzaju problemy.
Jeśli chcesz więcej, to czytaj tu:
https://docs.google.com/document/d/1OsI99MQFlzIvAHNSaX_bk5skUoQRZnu2COmQ_wQstb8/edit?usp=sharing