(SWD is faster in production anyway than ST's craploader which I refuse to call bootloader because it's not a bootloader.)
If your definition of a bootloader is that it loads a main program to the memory and starts it, than you are totally right.
But you should then also use another name for what is used in the Arduino world. (And maybe you do

) The so called bootloader there allows you to make a connection at startup to (re) program part of the FLASH, and when no connection is made it jumps to the actual main code if present.
For something that needs to work in the real world, I myself would get rid of it directly. Have actually done so for an extension I made for my central heating system. Needed to control a mixing valve servo and an Arduino mini board was more than enough processing power to do the job. (All gone now by the way. The geothermal heat pump system is up and running and works like a charm.)
I agree that the automatic start when FLASH is empty is not really necessary. In each case (selected by pin or automatic) you still have to connect something to program your device.
For devices that do not have a BOOT0 pin, I see another problem. As soon as you have programmed the device it won't start in this programming code (bootloader) anymore, so you have to implement something in your own code to take care of reprogramming, or it has to have SWD pins and you still have to have a ST-link programmer.
Best option seems to be to always use a SWD or JTAG based programmer.