I say use whatever makes sense. If using a global object or a singleton is going to make your code cleaner and simpler than passing extra context objects around, use it! If down the road you find that you're running into problems with it, then you can change it up
I see your point, but the issue is if you need to access one thing all over the place, your design is suboptimal.
For example, in my client, I only have two classes that are accessing the texture manager, that is my OgreView and OgreObject classes. My point is if you give parts of your program certain responsibilities and does not leak those responsibilities outside, you will likely not need to pass around for example a texture manager all over the place.