Yes, vanilla Emacs is weak/broken wrt option completion-ignored-extensions.
If you use Icicles there is no such problem. When a file name is ignored it is ignored completely; it is not shown in *Completions*.
And in Icicles you can toggle this ignoring off or on at any time during completion, using C-. in the minibuffer.
Icicles - File-Name ...
vc-git-grep is an interactive function which prompts, so when you want to call it from your own code you need to use call-interactively, otherwise it expects you to have supplied its required arguments in the call:
(setq vc-git-grep-template "git --no-pager grep -n -i -e <R> -- <F>")