Yes, IMHO, the above is an abuse of inheritance. It's using "is a" (inheritance) where "has a" (composition) would suffice. Standard OO doctorine is to default to composition and only use inheritance where it's actually required -- i.e. where you actually need to polymorphically operate on some abstract type through an interface -- so if ModelInstance isn't implementing an interface that it's inherited from Entity, then it shouldn't inherit from it.
Inheritance chains longer than 2 or 3 deep is likely a symptom that you've now got a horribly ridge relationship graph between all your classes and, as Hodgman goes on to say, some which are 90% duplicates of the others in order to get around a 'small problem'.
Small, focused, simple classes are not only easier to understand and compose but also have the side benefit of likely being a more friendly size for CPU caches as you won't have a cascade of data items playing a game of Take Up Cache Space during various updates etc.