I usually copy external libs in the same directory with the .asc file, so everything is self contain. Sometimes I only copy the needed component model + symbol, they are all plain text. This also solves the problem of same component name with more than one model. For local libs, the filename has to be added in the schematic as a SPICE directive: .include somemodel.lib. This also informs what models are not from the default libs, which is good to know.
Keeping all the needed files together with the .asc makes it easier to zip the entire project then share it with everything that is needed to run, plus I don't risk to break older projects after an OS reinstall. Otherwise you'll have to keep a list with what extra libs were installed, and from where.
I don't mind the duplicated libs or models across many projects, they are very small, usually less than 1MB for entire libs, or less than 1kB for individual models or symbols.