Como sempre, você deve ler a página de manual de um comando para descobrir como ele interpreta seus argumentos.
-- é comumente usado para indicar o final das opções de comando. Isso é especialmente útil se você quiser passar um nome de arquivo ou outro argumento que comece com - . Também é uma boa ideia usá-lo antes dos curingas que podem se expandir para um nome de arquivo que comece com um hífen. (Por exemplo, tente mkdir foo; cd foo; echo >-l; ls *; ls -- * .)
Mas git diff também o usa para indicar se um argumento é um <commit> (indicando qual revisão deve ser diff) ou um <path> (indicando qual arquivo deve ser diferenciado). Geralmente, ele pode adivinhar, mas é possível que um valor seja um commit válido e um caminho válido. Nesse caso, você pode usar git diff foo -- para indicar que foo é uma confirmação ou git diff -- foo para indicar que foo é um caminho.