It probably is saving your settings. But that doesn't mean that some other mixers don't also have saved settings and is changing things to its way on reboot. It's also possible that the user level settings are being used instead of those set by root. According to the man page it looks like it uses the same config file /etc/asound.state. So maybe try alsactl store as the user after root changes the settings. Or just completely remove asound.state and then alsactl store as root. Which should leave only roots settings and be the default system wide. (in theory)
In debian, I had a similar issue. I used aumix to set the settings. But if an alsamixer settings file (/etc/asound.state) was found, it was used and not aumix's settings file (~/.aumixrc). This is in the boot scripts where aumix checks for the existence of said file before trying to touch mixer settings. Which doesn't mean that there's anything in the file, just that if it exists aumix passes on changing the settings. Your boot scripts might differ in their configuration. The solution for me was to remove the /etc/asound.state file in order to have aumix's settings restored at boot. Not applicable for you which would be the other way around, and the default on my system.