Yes, because maintenance. If someone were to write a specific cDiamondArmorHandler and added it to the switch below, it wouldn't work. Keeping the style unified is important.

Also performance - ItemCategory::IsArmor() has a switch in it, and then there's another switch after the function; this results in more conditions than actually having a single switch for all items.