It seems like the debate boils down to "should subclasses be able to override behaviour in ways the base class doesn't anticipate?".
Pro: sometimes it lets you extend classes in useful ways that the original author didn't anticipate. Con: it makes it difficult or impossible to reason about invariants in the base class.
Seems like it's a trade-off between hack-ability and robustness.