Es una decisión difícil. Probablemente, lo que es "mejor" simplemente se reducirá a las preferencias personales y/o las características específicas de las circunstancias.
Por un lado, cada directorio no está "relacionado" técnicamente con ningún otro. Si bien implementan el mismo algoritmo, ninguno depende de ninguno de los otros (por lo tanto, desde el punto de vista del código fuente puro, no están relacionados). Por lo general, las cosas no relacionadas se dejan mejor en repositorios separados (por razones identificadas en la respuesta de Craig McQueen).
Sin embargo, debido a que do implementan el mismo algoritmo, puede encontrar que si necesita cambiar el algoritmo, deberá realizar cambios muy similares en todos los directorios. En tal caso, podría tener sentido para hacer todos los cambios como una única confirmación. Digamos que usted decide que el algoritmo debe ser compatible con "dinglehoppers virtuales". Agregaría ese soporte a cada directorio y haría una única confirmación cuyo mensaje es "Agregar soporte para dinglehoppers virtuales". Esto es bueno porque si más adelante decide que la adición de la compatibilidad con dinglehopper virtual era malo, ahora puede revertir solo una confirmación. La alternativa es hacer tres confirmaciones separadas para tres repositorios separados y luego revertir tres compromisos separados de tres repositorios separados.
Una vez más, es una decisión difícil. No creo que haya una regla bien definida y duradera.
He escuchado la modularidad fina con respecto a los repositorios git, y tiene sentido. Voy a enviar mis repositorios privados a github pronto, así que quería seguir las mejores prácticas, si es que existen. – argoneus