I may not have the full context here so I could be wrong, but from what I understand I see a bit of oversimplification.
What if I said that older people are inefficient, reticent to change and that, since they are usually higher in the hierarchy, they let the younger people take the blame ?
And when you speak to the younger employee, what he sees is that he worked 2-4 times harder than the older person, was able to compensate for the other's mistakes, and suggested improvements that were rejected. Therefore he is more efficient, more flexible, better at solution finding than his manager (who is praised) and he still finds himself in trouble just because he is overworked due to his manager. Wouldn't you be surprised too ?
I'm all for improvement. But this thing should go both ways, the enterprise should evolve too.
If you have a problem with young people, maybe you need to update the integration process for them, maybe they have some brilliant ideas that would benefit the enterprise ?
Once again I don't have the full context but there are several versions of every story.
As for being direct, I like it too. When I feel someone looks down on me, I try to find a breach in what he tells, I let him finish. Then I ask THE question he can't answer to, then we talk as equals It's not always possible though, sometimes they are not arrogant, they just know what they are doing and like to show off.
I'm not sure that a softer approach would work if you want to drive a rapid change in the person's attitude and performance. I believe they need this "before/after" shock.
That said, I would focus on prevention to get less employees in that situation in the first place. This would begin by explaining them why they do things in this particular way (extremely important !), what is their contribution, perhaps more regular reviews (each project ? monthly ?), maintaining an history on those reviews to highlight progress...
Once again, just a personal opinion here.