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.
My biggest worry about private prisons is that it incentives making more things illegal, longer sentences, disregard for recidivism rates, etc. There have already been cases of judges taking kickbacks from private detention facilities to hand out longer sentences. I guess this is a case of private companies corrupting government though. Government contracting stuff out to private companies is probably the worst of both worlds.
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.