In my experience that's likely because of software --- there's tons of ultra-cheap cameras with Omnivision sensors in them, and they just use the default settings and reference code which suffice to give not much more than a recognisable image. But they can be run in RAW mode to produce far better quality.