I've tried all of the combinations like i.e. new Component(), a component that is a static member of the class, ScopedPointer<TabbedButton> , nullptr, 0, ...etc.... . None of these work, but even if it worked, it shouldn't be considered a solution, but rather, a temporary hack. If "giving it a component" (as you kindly advised) instead of nullptr or 0 changed the situation, it still would be a problem of robustness of the TabbedComponent class.
I fail to see why giving nullptr or 0 should result in tab not being displayed... tab is just a tab... whether it contains any nested components or not.
Finally, if you use Introjucer to nest a TabbedComponent in another component, the addTab() calls use 0-es (not even nullptrs) as arguments and it works fine...
A class like TabbedComponent does a whole bunch of essential stuff in many methods like resized() etc. If you override them, then of course the base class won't work properly!
You really shouldn't be inheriting from TabbedComponent unless you're an expert. There's generally no reason to do so, you can just create one and use it.