In the real world, it turns out that code you didn't write can also have bugs or not behave as you expect it to, so the less of that there is, the better.
Encapsulation/abstraction should really be a tool of last resort. From experience, it doesn't actually help reduce complexity if overused, but just makes it hidden and more likely to surprise you when you're debugging.