There is a vast difference between having justifiable grounds for dismissal and public belittlement of an employee.
I’m not saying that you didn’t in all probability have adequate grounds to terminate the employee. But on the flip side of the coin you didn’t mention in your initial post whether or not you discussed with the individual whether he had any medical or religious conditions/restrictions that may have been contributing to is apparent lack of hygiene. God forbid he does, because if he does and he is smarter than he is clean… you’ll rue the day you ever opened your mouth in front of your staff.
What I’m saying is that there is absolutely no justification under any circumstances to publicly belittle any employee in the workplace. Firstly it can have legal implications. Harassment can be used to define a broad range of behaviors in the workplace. And generally speaking the courts tend to favour plaintiffs in situations where managerial personnel are seen to exhibit discriminatory or abussive behavior. But more importantly is that as an employee I would be asking myself when will it be my turn for public humiliation. Furthermore what is stopping me as an employee from telling Jimmy that his Curry sticks up the lunch room, or that I hate Franks pink shirts, or to tell you you’re a shitty boss in front of everyone else for that matter. Because a pattern of saying whatever you want in front of whoever is around will foster that attitude in all your employees.
You have every right in your personal life to tell it like it is. I’m sure to you, your farts smell like roses and your breath is like rainbows to everyone around you. And if you want to walk around pointing out others short comings then that’s your prerogative. However the workplace is no place for it. If you need to address a situation in the workplace you do it in private.
All that being said I will acknowledge that tradesmen and construction sites can be less than professional workplaces.