If it were possible to always deliver unpleasant truths kindly then of course we would prefer it. But in practice we have limited time and limited ability, so in reality the choice will often be between delivering an unpleasant truth bluntly and not delivering it at all.
Whenever you say something that a reasonable recipient would find upsetting, it means you've failed, in the same way that when you have to add an explanatory note to a translation, or a comment to your code, that's a failure. But it's still often the least bad way forward.