Как разделить доступ к git репозиторию, чтобы разные пользователи могли клонировать и пушить только разрешённые им папки?
Используйте submodules, так и главный репозиторий будет чище и права доступа можно разграничивать по модулям.
При доступе через ssh серверный git работает от имени ssh-ующего пользователя.
Соответственно, работают все линуксовые права доступа.