I believe OOP true strength are clarity and allowing you to introduce changes easily through refactoring. Now have you ever tried to refactor and test some code using singletons? It is very hard to achieve because any code can get access to a singleton and you can't override a static method. In fact, a simple change can have a disatrous impact on your code base.
If an object doesn't have behavior then it isn't a real object but a mere data holder. Hence, you are using a disguised procedural construct in a OO programming languague (with all disadvantages coming with it, see my comment above).