Is the last change timestamp of /etc/localtime newer than the timestamp of your current initramfs file?
If so, your initramfs file still holds the old timezones setting and it gets used in the earliest stage of the boot... during which time the system clock is set from the battery-backed Real-Time Clock module.
Once the real root filesystem gets mounted, the system will see the correct /etc/localtime, but by then it will be too late: the system clock is already set.
I'm not too familiar with Arch, but I believe mkinitcpio might be the command to use in refreshing your initramfs file.
Also, whenever you use hwclock to adjust the hardware clock, it will update the third line of /etc/adjtime to indicate whether the hardware clock is in local time or in UTC. If the initramfs version of /etc/adjtime is out of sync with the one in your real root filesystem, that could cause the system time to gain an offset too.