В руководстве Zsh указано, что опция -a означает ALL_EXPORT,
ALL_EXPORT (-a, ksh: -a)All parameters subsequently defined are automatically exported.
Пока export делает переменную доступной для подпроцессов, как может быть одна и та же переменная foo локальной?