This is a *very* loaded question!
First, let's talk about CMOS corruption. Some number of years ago, I installed an audio driver with a bad bug that, in certain circumstances, caused blue screens. Each and every time it blue screened, it would completely corrupt the CMOS. Bottom line, it can be done fairly easily. Now, can a sudden power failure cause this kind of corruption? In theory, the answer is no, but you just never know.
Next, let's talk about battery replacement. First of all, the voltage of the battery doesn't have to drop much before corruption (non-retention) can occur. More often than not, however, the important thing that they asked for a replacement was because (a) they don't know what its charge is and (b) while no battery is present, a clear of the CMOS contents will occur. Really though, they more-often ask for a CMOS clear to be performed by removing the battery for some amount of time (15 minutes to be absolutely sure that the CMOS is completely cleared).
Finally, let's talk about CMOS usage. Knowing that corruption can easily occur, BIOS developers started to move away from the use of CMOS to the storage of persistent variables (like the BIOS configuration data) in flash memory, which is a lot harder to corrupt and offers better security to boot. Most BIOS these days are built around Intel's Tiano EFI core (which was renamed to UEFI when it was open-sourced to the industry working group). In theory, when the BIOS developers built their BIOS around the UEFI Core, the code that was dependent upon the CMOS contents should have disappeared completely. Unfortunately, this was not the case; CMOS-dependent code was brought over from their old code base and it has never been completely eliminated subsequently. Worse, this CMOS-dependent code can cause the BIOS to fail to POST and only a clear of the CMOS will get it booting again.
I hope that answer it,