There can be reasons for having a separate initialize function, e.g. see Axelar’s CREATE2 factory called Constant Address Deployer which has deployAndInit
“in case you need constructor arguments that are not constant across chains, as different constructor arguments result in different bytecodes”.
But my point was that your CREATE2 factory (“deterministic-deployment-proxy”), although being great work and that it’s now deployed on so many blockchains, it shouldn’t have to be the only one we can use ever. You said something similar a few years ago, i.e. users are free to create and use their own or other factory (“deployer”):
Some may want to create or use some other factory that works differently. But in order to deploy the factory via keyless deployment, they need to replay a deployment transaction. With nodes increasingly forbidding transaction replay, it’s becoming almost impossible.
There will be newer factories that people want to get onto a blockchain and start using. Hoping that a blockchain will deploy one as a precompile isn’t realistic.