Imho it's just that method signatures are enough work to write and maintain that inheritance is needed for simple code reuse sometimes.
A language with good constructs for convenient call-signature reuse and redirection at the function level could probably skip implementation inheritance.
A language with good constructs for convenient call-signature reuse and redirection at the function level could probably skip implementation inheritance.