É parte da filosofia de código aberto de "se você quer algo feito, pegue uma pá". Naturalmente, reduz a carga de trabalho dos desenvolvedores se os usuários simplesmente compilarem o programa. Não precisa se preocupar com todas essas arquiteturas, sistemas operacionais, etc ...
Mas, se você está criando um produto de nível de consumidor (Firefox, Paint.NET, Audacity, Keepass, etc.) e se preocupa em adquirir usuários, sempre, sempre, sempre! inclua binários. Provavelmente, apenas 2% das pessoas que tropeçam no seu site e estão interessadas no seu produto vão:
- Faça o download do cliente SCM apropriado
- Confira uma cópia inteira da árvore de origem
- Baixe o IDE ou as ferramentas de compilação necessárias (facilmente várias centenas de MB para alguns projetos)
- Baixe e instale todas as dependências necessárias (e defina variáveis ambientais)
- Execute uma compilação nova (facilmente um processo de 10 minutos em alguns projetos)
- Lide com quaisquer erros ou problemas ou surja (que em pequenos projetos provavelmente não estão documentados - "ah, sim, o mais recente está na reescrita de ramificação, não no tronco!")
- Desinstale tudo ou deixe tudo no seu computador e recompile para atualizações.
(Obviamente, no linux, as coisas são muito mais saudáveis, mas a maioria dos consumidores ainda usa o Windows.)
É muito mais fácil para os novatos dizerem "ooh, versão para Windows! Baixe. Execute".
No entanto, muitos projetos de código aberto não estão no nível do consumidor; eles têm como alvo programadores, que têm uma tolerância muito maior para esse tipo de provação e, portanto, os binários são de bricolage. Na minha experiência, os programadores podem ser tão preguiçosos quanto os usuários, portanto, seja avisado. :)