The Unity manual says "Note that the Collision, Trigger, Death and Manual events can only use burst emission in the Emission module," and that eventually led me to figuring out why my sub-emitter wasn't doing anything when colliding with the sphere/cube—for some reason there were no burst times set on my sub-emitter. As soon as I clicked the + sign to add one, the sub-emitter started working. Strangely enough, any other sub-emitter I added after that automatically had the first burst time at Time 0.000.
Since it's burst mode, there's a bit of a loop-like effect, where you see the occasional big burst on collision. Is this just related to timing, i.e. sub-emitter's maximum particles being reached before particles die?
If you use collision, every time a single particle hits an object (assuming you have collisions enabled) it will then go through the burst mode. When you create a sub-emitter it's just creating another particle system as a child and telling it to emit based off the collision. By default this particle system will be set to looping at the very top in the main particle system module (second setting from the top). I'll note that even if I had looping enabled with the sub-emitter, mine didn't loop after the initial burst. So disabling this didn't change anything for me, but it could help for you.
If you just want it to burst once upon impact, uncheck "looping" at the very top and ensure the burst settings just say 1 for the interval. I'm not sure why yours was not setup properly initially. I didn't experience that issue when testing it out just now.
Thanks, I think maybe it's an illusion that makes it seem to me like it's looping in weird ways, when in fact collisions are actually happening. I can't really tell all the time when particles actually collide.
It can be tough if you have 20 particles colliding at once. You can reduce the parent particle system to emit one particle and you can see them a bit more clearly on collision. That's what I did to ensure it wasn't looping.