So ....
There are obviously many questions that all have been asked about Singletons, Global State Variables, and all that great stuff. My question is,
Reasons in PHP4-based apps like WP or CI are partially due to PHP4's worse support of OOP constructs.
Globals and singletons are also simple: It requires much less thinking to slap something in a global than building it with proper OOP practices. It's simpler to access them too, just point the code at the name and that's it instead of needing to pass the object in from somewhere else.
One negative side effect of global state (global variables, singletons, etc.) is that it makes things much more difficult to unit test.
ps: In my experience wordpress in general has a pretty poor quality of code. I would not use it as a metric of anything...