I have worked both in the EU and in Brazil and I do have to say that the Brazilian system is better. Labor protection is high (25 vacation days, guaranteed overtime pay, etc), but companies can still fire people. However doing so involves paying severance proportional to how long you been at the company.
When you leave a company you need to give one month notice (so you can't just get up and leave). I never seen a "layoff" (you get notice that you are leaving, but still have your job for a few months and usually no severance) like they do in the EU. When you are fired, you are out of there the same day with your severance and unemployment benefits.
This specific practice does have a few problems:
1) companies not firing about-to-retire employees who have been at the company for 10+ years because of the huge severance required. Instead they just wait for them to retire. However employees also really don't want to get fired in their last few years either before retirement because of how the pension system works, so it balances-out. 60+ year old people usually take it easy, but they are usually not just showing up for a paycheck.
2) Younger employees trying to get fired instead of quitting. If you been at a company for 3-4 years and you want to leave it is really a lot more beneficial to get fired instead. I have seen this happen, but not nearly as much as you would think (at least in IT).
Although you would think companies would want to "recycle" employees by firing them every year to prevent the severance from piling up. The math doesn't really work out like that on top of all possible disruptions of such high attrition rate.