<tab> is bound to expand-or-complete-prefix. I have no alias or function
called ls. The _ls in /usr/share/zsh/functions/Completion/Unix/ is as
far as I can tell the one that came with zsh v 5.9. At least I've not
modified or replaced it.
I assume that *something* in my zsh config must be the culprit but I've
not the faintest what that could be!?
Type Ctrl+x ? instead of TAB, to invoke _complete_debug, then examine the output file to see what's being done. One possibility is that "ls --help" called by _call_program from _pick_variant (to initialize the options known to the local version of "ls") is producing some unexpected result.