Razonar acerca de si la herencia (o cualquier característica individual, realmente) es necesaria o no sin considerar también el resto de la semántica del lenguaje no tiene sentido; Estás discutiendo en el vacío.
Lo que necesita es una filosofía de diseño de lenguaje consistente; El lenguaje debe ser capaz de resolver elegantemente los problemas para los que está diseñado. El modelo para lograr esto puede o no requerir herencia, pero es difícil juzgar esto sin el panorama general.
Si, por ejemplo, su lenguaje tiene funciones de primera clase, aplicación de funciones parciales, tipos de datos polimórficos, variables de tipo y tipos genéricos, prácticamente ha cubierto las mismas bases que tendría con la herencia clásica de OOP, pero utilizando un paradigma diferente.
Si tiene un enlace tardío, una tipificación dinámica, métodos como propiedades, argumentos de funciones flexibles y funciones de primera clase, también cubre los mismos motivos, pero nuevamente, utilizando un paradigma diferente.
(Encontrar ejemplos para los dos paradigmas descritos se deja como ejercicio para el lector).
Por lo tanto, piense en el tipo de semántica que desea, juegue con ellos y vea si son suficientes sin herencia. Si no lo están, puede decidir agregar la herencia a la mezcla o puede decidir que falta algo más.