I think you underestimated the original author, possibly by a wide margin. His article being accessible to students fresh out of school doesn’t hurt his credibility — on the contrary. Now more specific points:
On inheritance, you blame bad design instead of inheritance itself, but that doesn’t change the fact that inheritance is conspicuously absent from most good designs. I also remember my teachers touting inheritance as a great reuse tool, when really it’s not. If that’s not a fallen pillar, I don’t know what it is.
On encapsulation, well… mutability is still the default in most settings. And clearly, encapsulation doesn’t work the way we were taught in school — not with aliasing. At a first approximation, we tend to equate the dependency graph with the call graph, but that only works in a purely functional setting. Mutability introduces many more edges to that graphs, often in non-obvious ways. This certainly breaks the encapsulation promise, as stated by most teachers from 15 years ago.
On passing by value/reference in Java, you’re just being pedantic. I bet my hat the original author understood that subtlety.
On polymorphism, he was quite clearly talking about Java interfaces. And while it definitely is a very important mechanism, I’m not sure how specific to OO it really is, since the same effects can be achieved with first class functions.
On lies we tell children, you bring up an interesting, yet wrong, quote. Telling lies just confuse the hell out of the students. This is as true in physics as it is in programming. The Newtonian approximation is not a lie, it is an approximation. And the lies we tell in Quantum Mechanics used to confuse even the specialists in the fields (who at some points seriously considered that consciousness actually modified reality in the most magical way — see most Shrödinger’s cat explanations).