Neither is obviously more efficient than the other overall, it depends on the structure and the incentives. People worry about private prisons for example. If you make it so the government sends people to prisons and you pay the prison a fixed rate per prisoner, of course you’re gonna get skimping on services by the prisons. If you instead give the prisoner a voucher for a prison and make them pick where they go and prisons get money per voucher they get from prisoners, you’re gonna get competition on quality so you’ll get high quality prisons. Opposite outcomes with just a change to incentives.
That is a completely legitimate concern. It’s important to note that even if prisons are publicly run, there’s still a bunch of private actors in the prison system in the form of the people who work in it. Prison worker unions and police unions lobby for more laws already to protect their jobs. Private prisons might make that aspect worse, but it’s not like it’s perfect now.