The bug
If the gamerule doEntityDrops is set to false, it is impossible to empty item frames.
To reproduce
Run
/gamerule doEntityDrops falsePlace an item frame
Place an item inside of the frame
Try to punch the item frame in order to take the item out
→ ❌ Notice that it plays the "pop" noise, but does not drop the item.
Code analysis
In 1.12.2, items were removed from item frames by the method EntityItemFrame.attackFromEntity(damageSource, amount). In 1.13, this is now done in the method EntityItemFrame.dropItemOrSelf(entity, self). Since the latter method only runs if doEntityDrops is true, the code that removes the item cannot be reached.
Do note this change was likely made while fixing MC-124833.
Still an issue in 18w31a.