Object-oriented design (OOD) combines data and its methods. This, as far as I can see, achieves two great things: it provides encapsulation (so I don\'t care what data there is,
Isolating Complexity is IMO the main goal of any design: encapsulating functionality behind an interface that is simpler to use than the functionality itself.
OO provides various mechanisms for that - the two oyu mention:
Encapsulation allows to design a custom surface that is independent of the actual implementation. (to paraphrase, "Simpler means different").
Semantics allows to model entities that represent elements of the problem domain, so they are easier to understand.
Any project reaching a certain size becomes an exercise in managing complexity. I'd wager a claim that over the years, programming has skimmed along the limits of complexity we#ve learned to manage.
I haven't dabbled in functional programming for years, but in my understanding it can best be described by a mathematician's meaning of the words powerful, elgant, amd beautiful. "Beautiful" and "elegant", in this context, try to describe a brilliant insight into the true or the relevant structure of a complex system, looking at it from a point of view where it is surprisingly simple. it accepts the complexity as a given, and tries to navigate it.
The flexibility you mention is in my understanding the ability to change the POV according to your needs - but that runs contrary to encapsulation: what is a pointless detail from one position may be the only relevant in another.
OO, OTOH, is the reductionists approach: we change POV by going to a higher level. In "old OO", there is an a single hierarchy of POVs, interfaces are - in this model - a way to model different POVs.
If I may say so, the strength of OO is being better suited to "normal people".