Like @krader1961 says in #2601 (comment):
Note that the set -l LC_ALL C removes the exported attribute if that var was already exported. You can see this for yourself:
$ set -x LC_ALL en_US.UTF-8
$ env | grep LC_ALL
LC_ALL=en_US.UTF-8
$ function wtf
set -l LC_ALL C
env
end
$ wtf | grep LC_ALL
$ echo LC_ALL
en_US.UTF-8
$ env | grep LC_ALL
Notice that after invoking wtf the LC_ALL var is still defined but is no longer in the subprocess environment.