I'm pretty sure colocation is cheaper if you know what you're doing (what to buy, where to colocate, what kind of bandwidth required, etc). I'm also pretty sure a good portion of cloud customers don't know or don't want to risk it.
I think, at least for some business types, colocation will usually be more expensive because you have to overprovision or risk losing customers.