Agreed, and even more than that... not every model built is the right model for the needs. To use a parallel example, there's a reason why the same stored data at an org will often be processed and reformatted and pushed into an entirely different data model for different purposes. The data model in Postgres that is perfect for the online store becomes a bottleneck when you try running reports on it, so you bring it into a data warehouse with an entirely different structure to connect the BI tools. No one gets mad and says "but the Postgres database perfectly represents the structure of this data!" they breathe a sign of relief that the online transactional DB isn't getting battered with these queries that have a zillion JOINs and WHEREs and GROUP BYs and aggregate functions. :D
And at the same time, OOP needs to be done in a way where you get your models in a format that works best for the application's needs, and that's sometimes hard to balance against the need to model things as they are, if that makes sense.
J.Ja