One reason why one might want one symbol per part is that you can then add a footprint connection and ordering information. The reason for having it in the symbol is that it allows you to have somebody approve these.
For resistors the lib would then explode. I would personally only use one resistor symbol per footprint. (so one R_0603_1608Metric and one for R_0805_2012Metric) And have everything else filled out by the designer via the value field. (But i am not doing this as a job.)
If you want to go further, make one symbol per possible footprint, tolerance and power combination. (At least power/footprint combination makes sense as they are linked.)
Having such a partly specified symbol now gives you the option to have some pre assigned fields (footprint code, tolerance code, power code)
The designer then chooses only the resistor value as required. (Everything else is already in the symbol)
This approach does not allow to have an order number or even a house part number directly in the symbol. (While making the symbol you are missing the information about which value it will have)
One option is a BOM script that builds the house part number from all the symbol defined fields plus the designer field(s) (Example for an easy to generate HPN: R_[footprint code][power code][value code]_[tolerance code]). This number can then be used to look up which resistor to buy.
A problem might be that it leaves too much degrees of freedom for your liking. To circumvent this you can to add a few more fields. This will increase either the work expected by the designer or the lib size.
Another problem with this approach is that your purchasing department might want to limit which resistors your designers can use. But this can be done with the same script. It can simply check if the combination of fields is in the approved parts list. (But it will rely on designers checking if their schematic fulfills this requirement.)
Another option is to have the part selection for such parts completely external to kicad. That external tool then makes a project specific symbol per the designer requirements. (This symbol can then hold all the ordering information as well to everything my partly specified example also holds.)
Just to make it clear, you don’t need one footprint per symbol. Many symbols can link to the same footprint. (But you might require a script that does combine the information from the BOM with the information of the pos file.)