This behavior is wrong. I've confirmed the current git head fish still behaves this way. Also, sh, bash, and zsh do not behave like fish. If you don't pass any args to the sourced script then their equivalent of $argv is empty. Fixing this will break anything depending on the bug but I think this is a case where breaking backward compatibility is worth it.
How would you advertise the change? Would it be a release note?
Would it be possible to warn for a release if $argv is accessed when no arguments are passed?
Yes, it's just a "small matter" of writing a bunch of code then tracking the change to remove it and implement the correct behavior. And merely emitting a warning can itself cause problems. I think we just need to bite the bullet. It's a shame no one fixed this four years ago when you brought it to our attention.