Use global variables or function that returns said variables for site-wide private-ish WP settings?

No overriding benefit, other than collision avoidance and safeguard against unintended modification.

Not sure if it makes you feel any better but WP core itself has many dependencies on global variables. I’m not saying that’s a good thing; just a fact.

Also remember you have a database and functions to handle storing and retrieving options, for values you might want to use in different situations:

https://developer.wordpress.org/reference/functions/update_option/

https://developer.wordpress.org/reference/functions/get_option/