The reason the barrel does not "explode" is because the command "destroy" is called, which removes the barrel. In order for it to explode, you would need to have the command "subhealth=100" (I use this value if the health is set below 100 to start with) in it's destroy script *before* the "destroy" command.
So if you want an example of a destroy script with an explosion and a bit of camshake, here is an example I use with landmines. The following is the destroy script for the barrel:
;Artificial Intelligence Script
;Header
desc = Destroy Explosives
;Triggers
:state=0:subhealth=100,state=1
:state=1:plrsubhealth=150,etimerstart,activateifused=1,state=2
:state=2,etimergreater=50:camshake=20,sound=$0,state=3
:state=3,etimergreater=300:camshake=18,state=4
:state=4,etimergreater=350:camshake=15,state=5
:state=5,etimergreater=375:camshake=10,state=6
:state=6,etimergreater=400:camshake=0,state=7
:state=7:destroy
;End of Script
and the script I would use to activate the barrel's destroy script is as follows (set to the barrel's main script)...
;Artificial Intelligence Script
;Header
desc = Barrel check to be activated
;Triggers
:state=0:state=1
:state=1,activated=1:state=2
:state=1,activated=0:state=100
:state=2:runfpidefault=2
:state=100:state=1
;End of Script
The trigger script would be the original I gave you in the previous example. The key difference is in the first example, we activated the barrel via trigger which is destroyed (removed). In this case, prior to destroying, we subtract health from the barrel (same effect as if you shoot it).

There's no problem that can't be solved without applying a little scripting.