I don't understand. Your patch already doesn't make it possible to have the item visible in both the tabs and the page context menu. Let me explain what I see the current behaviour of the patch to be and you can correct me where I might be wrong:

If I create an Item with context: TabContext the Item will appear in the tab context menu. Adding some of the content contexts to the Item later on will likely make the Item never appear as they can't currently cope with the popupNode being a XUL tab.
If I create an Item with context being an array of contexts including TabContext the Item will attempt to appear in the page context menu, but never will since the popupNode will never be a XUL tab.
If I create an Item with a regular content context and then later add the TabContext the same as the previous will happen, the item will never appear.

All of that is fixable with a bunch of work, but I think it's an unnecessary complication when just setting parentMenu does the right thing and can't be changed later in ways that break things.

I'm saying that we ditch TabContext and instead just use parentMenu to say which menu the Item appears in. It's unchangeable later but I think that's ok, I can't imagine many cases where you'd want to move an Item between the two menus. You can still attempt to use the content contexts with the Item, though again they won't work correctly because they aren't coded to. That could be fixed though we'd want to consider which page the contexts should be applying against when you're context clicking a background tab.