Good developers won't tolerate a contract-to-hire offer or will sniff out that they're a fire-fast environment. That, and it's pretty terrible for employee morale.
I'm not suggesting contract-to-hire, so much as a formalized and transparent concept of probationary periods. I'm pretty sure at-will employment means you don't need to bother with contract-to-hire unless you want to be cheap with paying your employees benefits. So these employees shouldn't be on contract anyway unless expressly temporary.
It certainly would be terrible for morale if implemented thoughtlessly. But if it was done in a way with clear expectations of employee performance, then terminations would not be arbitrary. And the morale hit of being terminated at any time- a situation with legally exists in California atm anyway- would be mitigated by more companies being quicker to hire instead of forcing long arduous interview processes.
So then the situation becomes "If mgmt. is just, then they will keep me on, if they are dumb, then I can get quickly hired across the street anyway."
Sure, the end state of "everyone hires quickly and fires quickly" is better, but there's an intermediate state where only a few companies use the new paradigm. In that one, the "can get quickly hired across the street anyway" isn't true. And the people who get fired are going to spin narratives about how getting let go was management being stupid and untrustworthy, regardless of how true that is, so you'll wind up generating noise that scares off developers.