You can have multiple footprints per schematic symbol though. And when you place the symbol into the schematic, you can open the symbol properties and choose which footprint to use. For instance, our 0402 parts contain both a standard IPC footprint, and a high density version with minimal silkscreen and decreased pad size; default set to the IPC version. After I place the part in the schematic, I can open the symbol properties and select the appropriate footprint from the model list at the bottom.
In your case, if you wanted the same footprint, but different 3D models, you could create two copies of the footprint and place one version of the step model on the first footprint, and the second version of the step model on the other. Then just add both footprints to the desired symbol in your library and choose the appropraite footprint when the symbol is placed.
In regards to the libraries, independent discrete libraries in a central database are the typical solution. We have a network drive that contains our various .schlib and .pcblibs hat are divided and organized by part types. For instance, you could have something like the following....
Cap.schlib for all capacitor symbols,
Res.schlib for all resistor symbols
IC-D.schlib for all digital IC symbols
IC-A.schlib for all analog IC symbols
Mech.schlib for all mechanical parts (shields, etc.)
etc.
Then you will have separate footprint libraries. Something like the following:
Passives.pcblib for all passive component footprints (resistors/caps/inductors/etc)
IC-SMT.pcblib for the surface mount, non-through hole IC footprints
IC-TH.pcblib for all through-hole ICs
Conn.pcblib for all connectors
Mech.pcblib for mechanical parts
etc.
The library path in the project options would then point to the folder containing all the above libraries on our network drive. As long as the symbol calls out a footprint name that is contained within one of the various pcblibs, the tool will locate the proper footprint. Just make sure you don't have any duplicate footprint names amongst the various footprints. You can force certain libraries, but it's easier to just set it to "any library" and use unique names.
I usually use the integrated libraries solely in cases where the designer does not have access to the complete library files (i.e. remote off-site design). The integrated library only contains the parts used in the current project, so you wouldn't have access to new parts. Also, any changes or updates made to parts within the integrated library would not be directly available for use on other projects. So I suggest sticking with individual .schlib and .pcblib in a central database.
Hopefully that clears somethings up.