Companies aren't going to repossess your phone the way it's worth it to repossess your car or house if you stop repaying your loan.
So it raises the overall price because the companies charge more in order to offset the losses of people who effectively steal the phones they never finished paying for.
Same as what stops you breaking a contract and not paying any other debt: They'll start the collections process on you.
That's the problem with small debts, and why phone locking was a clever solution -- if the phone becomes useless when you stop paying, people will actually pay it off when they wouldn't have before.
If they already have a bad credit score, then the carrier giving them an expensive phone without upfront payment is kinda on the carrier.
I think there's probably a significant net benefit to society from forcing carriers to unlock phones by default. If you're overseas, or need to temporarily use another carrier - you can.
If a carrier is not willing to carry the risk that someone who has bad credit might break the contract for an expensive phone - then I think perhaps that's not such a bad thing.