GNU Make. Por que essa sintaxe complexa para gerar dependências?

Estou lendo Gerenciando Projetos com o GNU Make e encontrei este exemplo no Capítulo 2.7 - Geração Automática de Dependências. O autor diz a partir do manual do GNU:

%.d: %c
        $(CC) -M $(CPPFLAGS $< > $@.$$$$; \
              sed s',\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
              rm -f $@.$$$$

No entanto, eu era capaz de fazer a mesma coisa com isso (observesed):

-include $(subst .c,.d,$(SOURCES))

%.d: %.c
          @$(CC) -M $(CPPFLAGS) $<  | sed 's|:| $*.d : |'  > $@;

Todas essas linhas são geradas as dependências, em seguida, adicionar no*.d&nbsp;nome. Eles tiveram que mudar a primeira linha de:

  foo.o: bar.h foo.h fubar.h

para foo.o foo.d: bar.h foo.h fubar.h

O meu é mais simples e parece funcionar muito bem, mas eu suponho que o pessoal do GNU tinha uma razão para suased&nbsp;comando. Além disso:

Por que um redirecionamento do arquivo parased? Por que não simplesmente tomá-lo como um parâmetro de linha comum?Por que não pular o arquivo intermediário completamente?

Eu sei que os caras do GNU poderiam ter pensado nisso também, mas por algum motivo, foi com a configuração mais complexa. Eu só quero entender o raciocínio deles, então eu posso fazer isso na hora.