Yeah, I feel singletons are mostly a result of people learning globals are bad and wanting to pretend their global isn't a global.
A bit like how java people insisted on making naive getFoo() and setFoo() to pretend that was different from making foo public