If you're storing your PR's in a recipe array in the plc, why not treat new programs as offsets of a base instead of individual programs. If you're part geometries are similar enough that you're creating single axis offsets, the customer would simply have to create a new recipe of offsets. We do this with dual robot gantries loading multiple entities such as lathes, gauges, stockers, etc. The robots run one program but are fed pr arrays based upon part number.
That is what we are doing (essentially). I intend to create a single program for each basic function, which will use a set of position registers that will be modified with offset data from the PLC. We just have many small steps that we will sequence together, in different ways, based on the specific needs of the task the cell controller is running. We don't have much data on the parts from the customer yet, so this needs to be a highly flexible design.