Per la maggior parte, uso le filiali. In molte rare occasioni, ho clonato una copia completamente specifica del client del repository. Il punto principale è che vuoi che tutto rimanga "correlato" in modo che la fusione e forse anche il cherry picking non debbano proverbialmente succhiare.
Seguo la stessa regola che seguo quando faccio un fork di qualsiasi altro progetto open source. Se ho bisogno che il progetto vada in una direzione che la maggior parte delle persone coinvolte considererebbe eccessivamente localizzata e specifica per le mie esigenze, la forzo. Se le esigenze del cliente sono sufficienti a divagare dallo sforzo principale, rimuovi un altro repository.
Altrimenti, non è affatto raro mantenere filiali per varie architetture, quindi i rami per particolari client che non richiedono di allontanarsi troppo dall'ambito di sviluppo principale servirebbero fondamentalmente la stessa cosa.
Inoltre, non c'è niente di sbagliato nella clonazione di un nuovo repository per client. Il punto è, tenerli tutti correlati in modo che il tuo sistema di controllo delle versioni ti aiuti a gestire le unioni, le bisecature, i tag e tutte le altre cose belle che contiamo su di loro.