Isso parece ser um bug de algum tipo. Encontrei este arquivo de bug no Ubuntu, intitulado: --include faz o mesmo que --exclude! .
Seus exemplos no meu sistema Fedora 14:
$ more file.*
::::::::::::::
file.c
::::::::::::::
This is a .c file
::::::::::::::
file.h
::::::::::::::
This is a .h file
incluir
$ grep "This is a" * --include="*.c"
file.c:This is a .c file
$ grep "This is a" * --include="*.h"
file.h:This is a .h file
excluir
$ grep "This is a" * --exclude="*.c"
file.h:This is a .h file
$ grep "This is a" * --exclude="*.h"
file.c:This is a .c file
versão grep
$ grep --version
grep (GNU grep) 2.8