Clase genérica: Persona
Clases concretas que heredan de Persona: Cliente, Proveedor, Empleado, etc.
Tu pregunta es ¿cuándo utilizar un tipo de clase u otro?, pero la respuesta tiene que ver con el diseño de tu sistema y no es que existan reglas que sí o sí tengas que cumplir (Existen algunos patrones pero vos decidís si aplicarlos o no), por ejemplo, si tu sistema solamente va a tener la clase Cliente, no tendría mucho sentido crear la clase Persona, simplemente creas la clase Cliente con todos los atributos y métodos de la clase Persona mas los particulares de la clase Cliente. En resumen, cuando existen dos o mas clases que comparten una estructura o comportamiento en común, se extrae esa parte y se define una superclase con ella de la cual heredarán todas esas clases.
PD: Existen algunos patrones de diseño que muchas veces simplifican las cosas pero no los tengo en formato digital.
Un saludo.