Its always better to reuse but it has its limitations.
If you need parallel instances e.g. one is not finished emittinh yet and you want to start a new one (emitter lasts longer than buffer time of attacks) its better to instance a new object.
If you want to override the material in case it hits a different surface (e.g. enemy instead of wall) its more convenient to create a new object so you dont have to change it back every time.
So my suggestion is create a new object every time as it gives you more flexibility. And if you realize you dont need parallel emitters you can always go back to reusing.
And dont forget to dequeue instances you dont need anymore.