Tip : do not use cvpcb, seriously !
I’m sorry, but I like cvpcb. It helps prevent any serious bloating of symbol libraries. It provides flexibility. It allows unusual assignments on the fly if desired. Of course cvpcb increases your responsibility of choosing the right things. But any errors can anyhow be corrected after the first prototype iteration.
I would’t like to have numerous symbol library copies of e.g. resistors, inductors and capacitors each of them associated with certain footprints. The fact however that each symbol may contain a list of footprints eases the assignment procedure in cvpcb. Despite such, one has full flexibility to assign any other footprint. Hooray!
By the way: if missing footprint previews in cvpcb appears as a problem in some cases, you can assing the footprint in the context menu of the symbol - with preview.
BTW: if - after a basic start of a new schematic - a cvpcb procedure had been executed, all of the already uses resistors, capacitors etc. of a certain symbol name will have their footprint assigned. I then usually use the copy hotkey to add e.g. more resistors in the schematic, and assign them a value. This also reduces the effort in cvpcb. If any resistor need e.g. a bigger shape, this - of course - requires attention in cvpcb (or the symbol context menu).