Looking at the OTA updater-script it patches the system , boot and there are
many bootloader partition (+ backup) updates:
However before it does anything it checks all the destination blobs aganst 2 sha1 hashes eg.:
assert(apply_patch_check("/system/app/ApplicationsProvider.apk", "a856b3d2514718d836bd2f7337a4df6a298fb95f", "19153dd479861c5a74f1effeff8c76dbc9c86027"));
assert(apply_patch_check("/system/app/ApplicationsProvider.odex", "f38367a96e435cc42bfac94c8c83ee46fc908ebf", "f7c5ab674289a33f3e146d085cb11192c659a90b"));
the one sha1 is here from JLS36C and the other one from JLS36I. Means, I guess,
that you can run the OTA even on a partially updated system.
It would be easy to write a simple program that checks the file/sha1
and prints what's modified or missing ...