HI Android Newbie,
At run-time end user i.e third party applications can't access /data/local/ without root access, so logically end users cant change the boot-animation.
And in BootAnimation.cpp,
#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip" is useful if any system app wants to change bootanimation as System app can have right to access /data/local/.
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip" is useful if you want booanimation to be used as default, as at run-time in nobody can change content of system partition.
To understand the concept behind this, You should understand which partitions are available to whom (user, system...) and in which mode (read, write...) and when(Android runtime, recovery..).
I hope it helps you.
Thanks,
Shridutt Kothari,
Impetus Infotech India Ltd