After toying around with this, I don't think it can be done. For starters, I couldn't make a valid entity with this:
Code:
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "grenade"))
The ent is always invalid. This leads me to believe that it's impossible to create a "grenade" entity. I don't have any experience dealing with this kind of entity.
Unless I'm unaware of something, it seems like you'll have to make a "fake" grenade and then a "fake" explosion to achieve your desired result.