Non è possibile che uno sketch cancella il bootloader, questo perché dalla porzione di flash in cui viene eseguito non è permesso riscrivere la flash, inoltre la piccola porzione dove risiede il bootloader è protetta contro la scrittura da codice, puoi farlo solo tramite programmatore hardware.
La protezione tramite lock bit serve solo per impedire la lettura della flash, è una protezione contro la copia, se li attivi puoi sempre e comunque riprogrammare Arduino tramite un programmatore hardware nel solito modo.
Se ti capita di dover ricaricare il bootloader è perché l'hai cancellato tramite programmazione ISP, in questo caso è la norma, oppure il tuo sketch manda fin da subito molti dati, in modo continuo, sulla seriale e questo crea problemi alla comunicazione del bootloader perché il 16u2 non viene resettato, per ovvi motivi, all'avvio della programmazione e continua ad inviare i dati presenti nel suo buffer, in questi casi risolvi con la "manovra di emergenza"