There's noot much we can do here scripting-wise. The whole concept of handling the shop key is borked:
The developers apparently wanted to make it appear as if Penny leaves her shop key on a table (inside the shop) while she's in, and pick it up again when she leaves. For this purpose, they use two copies of the key: one is always in Pennys inventory, while the other one is always on the table. When Penny enters the shop, the script on the shop trigger anables the key on the table and is supposed to disable the key in her inventory (otherwise, the player might find a second key whiile pickpocketing); when she leaves, it is the other way around: the script disables the key on the table and is supposed to enable the key in her inventory.
Of course, enabling/disabling a reference in a container does not work. It never does.