Stai dando troppo poco contesto per prendere questa decisione.
Detto questo, se modellare le cose in quanto classi diverse della stessa classe ha poco a che vedere con quanti campi diversi hanno, e molto con come ci si aspetta di usarle nel tuo programma. L'esempio canonico è una classe Point
con coordinate cartesiane rispetto a coordinate polari; entrambi avranno probabilmente due campi numerici privati, ma quelle due coppie di numeri non significano lo stesso, quindi sarebbe terribile usare solo una classe e cercare di tenere traccia di cosa significano i campi - due classi strutturalmente identiche che sono diverse in base al tipo di sistema sono chiaramente la cosa giusta da fare.
Nel tuo esempio, tutto quello che posso dire è che non vedo nessuna circostanza in cui tu voglia trattare un cliente e un paese in modo intercambiabile, eccetto forse se tutto ciò che vuoi fare è creare dei grafici di dati distribuiti dove il tipo di i dati non contano affatto (forse lavori nell'ufficio delle statistiche delle Nazioni Unite?). In quasi tutti i programmi che posso immaginare, i clienti e i paesi devono essere tenuti separati e utilizzare il sistema dei tipi per fare in modo che questa distinzione sia praticamente sempre una buona idea.