It's fine to have an object that is only instantiated once. But there's no reason to enforce that in the class.
Yes, making sure no one makes more than one instance of the class is defensive programming and you could consider it bad, but a lot of techniques in programming are defensive like that, especially in OOP.