You've yet to clarify what hoops those are.
1. You can only inherit/override vars, not methods, with your inheritance model. Also, I'd guess that any property used in your model has to be defined for all object types (otherwise the compiler may complain about undefined variable references).
2. You can't easily place item instances on the map. Sort of related to this, inherited properties (like icon and icon_state) aren't available at compile time.
3. The code is messier. Writing out 100 object definitions in your item_database would make it terribly difficult to figure out what inherits from what. DM's syntax for defining object types is easy to use and the indentation mirrors the object hierarchy (the IDE also shows the hierarchy in a tree view).
4. Using inheritance for all differences in behavior, like I showed in my last comment, means you will quickly run into cases where you want one object to inherit two different kinds of behavior but can't. You're reserving object types and inheritance for one specific thing and it's not always good for that.
It's really the latter moreso than the former. My approach actually has a minor performance hit, but it's so minor there's no point counting it.