For developer distributed apps, the icon is inside a digitally signed bundle. Change it, and the app will no longer launch on a non-jailbroken device.
Of course Apple can do things differently for their own apps, because they're the ones making the rules on what digital signatures to check.
.