With items that can be dropped from inventory but work on their own, every drop and every pickup is a disable. Whenever an object is disabled, it remains in memory. The reference is placed in a queue for deletion a few frames later.
MarkForDelete allows a script to set the delete flag on a disabled reference.