Greetings, I've found that (flyspell-buffer) doesn't go through the same dictionary initialization steps as (ispell-buffer). Specifically, the flyspell functions (flyspell-word) and (flyspell-large-region) don't call (ispell-maybe-find-aspell-dictionaries), they way (ispell-region) and (flyspell-mode) do. The result: user's aspell setup (if present) doesn't get to inform `ispell-dictionary-alist', unless e.g. (ispell-buffer) or (flyspell-mode) is called first.
I believe simply adding (ispell-maybe-find-aspell-dictionaries) near the top of `flyspell-word' and `flyspell-large-region' definitions, as it already is for `flyspell-mode-on', will take care of this.