I'm not sure it's a question of whose "fault" it is so much as a question of what buildcraft means by "inventory empty". If it is calling getSizeInventory (specified by IInventory) to check how many slots the machine has total, counting the upgrade item is fair game. However, if it is calling getSlotsForFace (specified by ISidedInventory, called getAccessibleSlotsFromSide in some older Minecraft versions), that is checking for slots that can be input or output via automation, and the upgrade slots should be excluded.
It's not easy to track down which one Buildcraft uses, but I think it uses some wrapper classes to access inventories via ISidedInventory methods if available (see https://github.com/BuildCraft/…sactorHelper.java#L49-L55 - not sure whether the old BC from that 2012 thread used an analogous method), so IC2 should be able to exclude the upgrade slots from the return value of getSlotsForFace. However, I've gotten the impression that the IC2 devs are busy behind the scenes updating the mod to a newer version of Minecraft, so we'll probably have to wait for that first.