I would say "It Depends" :)
What you have to think about, is how do you want your module to react to being placed more then once on a tab, more then once in a portal, and in more then one portal.
The level at which it is important you distiguish between them, is the level you want to tie your data to.
ModuleID identifies a unique instance of your module, and in most cases is all you need to identify information about what data belongs with this instance - PortalID/TabID are really used by the framework to identify what content to render.
But lets say that you want every copy in a portal to share data - then it would have to be ID'd by the PortalID.
It would be similar for TabID for each tab.
Don't forget that if you have configuration information about your module to save, there is a handy table called modulesettings that all modules automatically get access to. This is where the image module saves it's information, for example. As well, the links module uses this to save the display option settings - look at the code there for examples of how it is available via the basepage, and how to update it via a function in adminDB.