Interesting article -- okay, I'll bite. First let me say that I agree, up-front analysis is always partly wrong. Responsibilities and interfaces will eventually change. Anyone who's ever created an API or shared component lives in that world.
But, assuming a component has callers outside of a single application, how can you avoid defining a contractual interface? If components didn't have responsbilities and defined interfaces, developers calling those components would have to understand the internals of every single one of them. In a large system, that's just not realistic.
Sure it can be taken to an extreme, but what's your alternative?