Each slot with each trait has its own separate item ID. For example, there are 63 separate item IDs just to cover the 7 armor pieces of Lunar Bastion (7 slots * 9 traits--Nirnhoned can drop from leaderboards; not counting weapons/shields). The bind type (BoE, BoP) is set individually per ID.
A bit of background information for readers of this thread:
Each slot with each trait has its own separate item ID. For example, there are 63 separate item IDs just to cover the 7 armor pieces of Lunar Bastion (7 slots * 9 traits--Nirnhoned can drop from leaderboards; not counting weapons/shields). The bind type (BoE, BoP) is set individually per ID. So with that many IDs to cover all the possible slot/trait combinations for a set, it's possible for there to be an accidental oversight in which the bind type of some of those IDs is set incorrectly.
This happened back when Update 10 launched when some of the MoL pieces were BoE. This was fixed in an incremental, which affects not only future drops, but also all existing copies in the game.
(In order for a BoE->BoP change to not be retroactive and affect all existing copies, the new BoP items need new, separate item IDs, which is what happened with Worm/Ebon/Viper/etc. in Update 12. Since the MoL BoE is clearly an unintended bug, they will not do that, so when it does change back to BoP, it will be retroactive and affect all in-game copies.)