A maior parte se resume a preferências pessoais.
Eu rastreio tudo o que faço para um projeto no Git. Especialmente porque o Git lida com a maioria dos tipos de arquivos, mesmo binários, com eficiência suficiente. (Em vez de absurdo interno do Altium SVN)
Um dos meus principais motivos para fazer isso é que meus clientes nem todos acham que o Dropbox é seguro o suficiente e que eu preciso de um sistema de backup que eu possa acessar em todo o mundo, com também algum contexto de versão na maior parte do que faço. Então, eu configurei um servidor Git privado e um sistema de backup criptografado e isso funciona muito bem. Placas, Esquemas, Código, Documentação, Relatórios, Modificações Manuais, tudo é rastreado.
Normalmente, eu criaria um Repositório para Hardware, um para Software e outro para Firmware, se for um projeto grande e potencialmente demorado, mas para pequenos projetos de serviços, exemplos ou pequenas experiências, costumo colocar tudo em um repositório, pois os resultados o caos não será grande.
No Git, você também pode usar sub-repositórios para integrar o Firmware ao projeto de Hardware ou o contrário, mesmo que sejam repositórios gerenciados separadamente.
Para os projetos maiores, também costumo usar sistemas de rastreamento de bugs para rastrear problemas e resoluções, tanto para HW quanto para SW, o Mantis é um bom que pode ser usado gratuitamente.
Para revisões de hardware, eu gero Gerbers, ou o que você tiver, marcado com o Git Hash para essa revisão, esses Gerbers são os únicos itens com versão "antiquados" discretos nas pastas R01, 02, etc. Como você não deseja regenere-os o tempo todo, mas eles são arquivos resultantes, portanto, não devem ser versionados no próprio Git, realmente (porque seu software de design deve ser determinístico na geração de conteúdo de produção, ou então ...).
Se houver algo interessante no R01 que não esteja acontecendo no R02 (ou o contrário), você terá dois Git Hashes com os quais poderá comparar os arquivos de origem, não se preocupe.
Como observação final, um exemplo conceitual de um projeto teria um repositório de Hardware, que também hospeda um arquivo "BoardPinout.h". Este arquivo é incluído como um arquivo com versão remota no repositório de firmware, que possui alguns arquivos de definição de interface que são incluídos remotamente no repositório de software.
Ou seja, toda vez que altero alguns sinais sem modificar a ampla funcionalidade, o projeto HW "atualiza" o BoardPinout, que pode ser atualizado e usado no firmware e assim por diante.