Invisible particles aren't always processed
The lifetime of particles doesn't progress in OpenMW while their visibility is turned off, making them appear again if the animation is repeated. You can see this happen with the flame atronach's melee attack effects.
The rest of this post is just notes about vanilla bugs:
The following vanilla limitations for creatures also applied to body parts:
Creature particles that don't ignore parent animation (not flag 32 in NiBSAnimationNode) aren't displayed by the vanilla engine if they don't meet these conditions:
- the particles node must include the flag value "128", which makes the particles attach to parent (if the object's coordinates change, particles will move with it) - without 128 the particles start at the creature's original position until the camera looks at them, or when placed by a script at 0,0,0 in interiors until reloading the game
- the controller must have the "clamp" flag (12 = 4 for "clamp" + 8 for "active"). Note that vanilla creature models with such non-working particles also had the extra data node "Clamp =" which is not taken by the engine.
- neither the particles nor its emitter has the "hidden" flag (1), or if one does have a hidden flag it also has a visibility controller that unhides it during the animation
Edited files are needed to show the particles in vanilla. OpenMW plays the particles even if the "128" or "clamp" conditions aren't met. Edit: I don't think either of those is an issue. See below comments for a probably unrelated issue with the lifetime of invisible particles.