Because this now means that instead of an item simply being a row in a SQL database with an id saying what item type it is, it now needs to also store a unique item ID. I’m assuming items in D4 are a variable-sized data structure, with the item type ID adding or removing fields (thus allowing the concept of item modification). This also affects item stacking.
Item stacking is probably simply a number on an item ID of how many there are, with each “box” in your inventory or stash holding exactly one item (again, with the “stack count” value). How do you stack items with unique IDs? Or if you stack them do they simply collapse and lose their unique ID? But now if you do that you’ve lost the item’s original ID, thus the trace to the original owner through SQL transaction logs. Or do you now fake stacking in the UI, trying to combine multiple items of the same type. But man, would that get really messy.
(Consequently, this is probably why compasses can’t stack, because they are probably implemented as customizable items like gear, which also can’t stack for obvious reasons.)
The way to fix duping is not to simply take away features you build for originally. (Yes, you absolutely can and maybe at some point they will.) They’re obviously just treating it like other hacks and exploits: find the causes, fix them, and ban the accounts they internally proved were cheating.