O primeiro argumento não opcional para sh se torna $0 . Quando sh é invocado em um script, esse é o caminho para o script. Quando você executa sh -c SOMECOMMAND , o shell não usa o argumento para nada além de colocar em $0 . Convencionalmente, seria um nome para o script passado para -c , por analogia com o sh /path/to/script caso em que $0 é o nome ou caminho do script.
Diferentemente da maioria dos comandos, -- é tratado como um argumento comum, não como um marcador de finalidade especial. Então é realmente -- que é usado como $0 e não o próximo argumento.
$ sh -c 'echo $1' hello
$ sh -c 'echo $0' hello
hello
$ sh -c 'echo $0; echo $1' hello world
hello
world
$ sh -c 'echo $0; echo $1' -- hello
--
hello
Isso não tem nada a ver com xargs , está passando todos os argumentos após sh para o comando sh .