Many have made similar observations about how the 3CX provisioning is lacking when it comes to using all the various features that a phone may have. The issue is that there are simply too many makes and models and the manufacturers may, at any time, modify their firmware which may entail other modifications to the feature set and the associated provisioning. As a result, theirs is a generic GUI form that is used regardless of phone make/model. For many this will suffice as their needs may not be as complex or the phone may not support. A T46 may support key labeling whereas a T22 may not.
To get around the issue, 3CX allows for the modification of templates so that you can tailor the file to your needs. Of course, this requires manual effort as each file may be unique to the extension and the variables will still not show in the GUI, so any changes will have to be done at the provisioning file level. 3CX will only overwrite the values that are present on the web GUI, so if you modify a template using fields that are not present, then 3CX will not overwrite those value. This may not be of much convenience in your case as you could change the BLF key functionality, but might still need to modify the template to correlated to the desired key labeling.
The other option is, as you suggested, to manually provision the phone and then turn off the re-provisioning aspect in the phone web interface. This will not necessarily prevent 3CX from provisioning the phone should someone elect to do so from the web console; so you will have to be careful going forward but, it should prevent the phone from doing so on its own when rebooted or at a scheduled time as you have observed.
Simply delete the extension and then re-add without specifying the model/MAC. In the phone, eliminate the provisioning path and/or turn off the feature if that option is available.