Eu já vi muitos projetos que mencionam apenas a licença no arquivo README ou em um arquivo LICENSE or COPYING.
Seu software é coberto automaticamente por direitos autorais, conforme acordado na lei internacional. (A menos que você esteja trabalhando para o governo dos EUA ou alguma outra organização à qual os direitos autorais não se apliquem.)
Se alguém usa seu software, deve seguir o contrato de licença ou seguir as restrições de uso justo sobre o que pode fazer.
Suponha que a pessoa queira usar um dos arquivos em sua distribuição de código, o que obviamente requer uma cópia e, portanto, a lei de direitos autorais se aplica. Por padrão, eles NÃO têm o direito de usar seu software sob a lei de direitos autorais. É somente quando eles conhecem e seguem as restrições de licença que eles têm permissão para usá-lo.
Portanto, se eles usam um arquivo sem uma licença de software, estão violando a lei de direitos autorais. Como todas as licenças dizem algo como "O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software", eles são obrigados a colocar essa licença em algum lugar.
Isso pode estar no próprio arquivo ou, quando usei o código como biblioteca, coloquei as partes relevantes em seu próprio diretório e adicionei um "README" ou "LICENSE" a esse subdiretório.
Em resumo, você não precisa colocar a licença em cada arquivo. Eu acho que é um exagero. Não há proteção legal extra para isso. Ajuda um usuário a jusante um pouco, mas não muito.
Penso que a tradição de muitos metadados baseados em comentários (licença, data de criação de cada função, changelog etc.) são tradições muito antigas que existem porque são fáceis de fazer e que são mais um talismã do que úteis.
Por exemplo, o modelo padrão do Eclipse adiciona o que considero metadados inúteis antes de cada função, que acho que é muito melhor capturada pelo controle de versão. Mas essa prática é comum em muitas lojas.