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.

Cheers,
Nathaniel