In general, I'd rather only set Explodable property of a BlockTableRecord to false, and not worry user changing it in BlockEditor. If a user takes all the trouble to go to BlockEditor to change it, he/she may be good reason to do it, or may not be trained well to follow/comply with the office CAD standard.
However, if you really need to use code to add extra measure to prevent it with legitimate reasons, be aware it would only work while your code is loaded:
you can handle SystemVariableChanged event to watch system variable "BlockEditor": 0 - block editor is not open, 1 - block editor is open. Then in the event handle, when the block is open, you can
1. start handling Database.ObjectModified event and keep track the change blocktablerecord. Once the block editor is closed, you examine if the Explodable property has been changed to true, if yes, you changed it back to false;
2. you could also start a custom ObjectOverrule once the block editor opens, which would is used to prevent changes to specific BlockTableRecord (and/or its specific property, such as Explodable). Once the block editor is closed, you disbale the ObjectOverrule.
Again, I'd avoid doing such complicated things if possible.