I hope this is not too late but I think you can find out when a HE grenade detonates by hooking pfnRemoveEntity and checking if edict_t*->classname is the grenade.
Its been a while since I played with CS so I'm not sure of the name.
What you could do is hook the pfnRemoveEntity function and log the entities passed to it to either the server log or your local console with CLIENT_PRINT.
Note, coded in the quick reply box - may not be accurate
Code:
void RemoveEntity( edict_t* pEntity ) {
static char szClassname[ 64 ];
if ( ! FNullEnt( pEntity ) ) {
_snprintf( szClassname, sizeof( szClassname ), "Entity %s being removed from the world!", STRING( pEntity->v.classname );
CLIENT_PRINTF( INDEXENT( 1 ), print_console, szClassname );
}
RETURN_META( MRES_IGNORED );
In game - throw a grenade and see what output you get.