It is not only ok but also fundamental, for me, to have the right to fire someone for low output or for bad behaviors (Except if it is right after a illness, a childbirth, put here any major stressful event in the life of someone) and it is also ok to give a period (in my state is now 6/12 months depending on the position) in which you can hire someone and evaluate him, deciding then to fire him if he is no good enough for you.
But to have a "fire at will" policy lasting forever? No way.
It's worse to force companies to employ someone for forever. That's a great reason to hire as little as possible, and fire within the trial period even if the employee did well, so you're not on the hook forever. Best case you end up "too big to just fail" like GM, worst case you die in just a year or two because you got unlucky with one turned-useless employee which your small business just can't afford. Those people will end up unemployed anyway when the business fails.
If you want to give people money because you feel bad for them, just (have the government) give it to them, that's the least adverse-incentive-prone way to do it.
It's a matter of protecting people who currently have a job or those who don't (including those who recently did). If you make it impossible to get rid of problematic employees, you make hiring new employees too risky. That in turn makes it so you can't get hired unless you have a perfect resume, with proper education and grades, and no gaps in employment, as that could indicate a risk, and the employer just can't take any chances, they need to reduce risk to the greatest extent possible.
The net result is less employment, and more workers who would do a fine job but just can't get hired anywhere.