Não há diferença, pelo menos nos casos específicos que você mencionou. O shell removerá os caracteres "
e o resultado final será o mesmo. Para depurar problemas de citação de shell, às vezes eu uso um programa simples que apenas imprime seu argumento. Por exemplo,
$ printargs --param="value"
argv[0] = printargs
argv[1] = --param=value
$ printargs "--param=value"
argv[0] = printargs
argv[1] = --param=value
Aqui está o código, para referência:
#include <stdio.h>
int main(int argc, char** argv)
{
int i;
for (i = 0; i < argc; ++i) {
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}