I do a little of both. The onspawn method I use is to loop through what the npc has, usually I only use this on npc's that have a few items maybe 3 or 4. All the items are marked undroppable. Then in onspawn I run through those items and give a percent chance maybe 25% that any one item is marked droppable. So you can get none, or more usually 1 or 2 itmes from an npc.
The ondeath I use give a % chance either the left hand, right hand, or chest slot drops. The percent chance is varied by the difference in levels between the killer and the killed. Reducing the chance that higher level players can kill twits, low level creatures, for their loot. So once you are 10 levels higher than your enemy the drop zippo, for you. Anyway that's one thing I do.