Hi... more news... I test and test and test your project. Godot make a big spike (about 30-50 frames) every time that you add a viewport to the scene (i think that viewports aren´t dessigned to this use). If you redesign explosion.tscn,ice_explosion.tscn, ice_enemy.tscn and fire_enemy.tscn to not have any viewport, there is no stutter. So ,in this case, is not particles problem (until particles are in the viewport).
Other question: I recommend you for a tiny game like this to do all preloads in your singleton and save all resources to .tres files and preload that too in the singleton, game takes more time to start ( less that a second) but you don´t read from disk in runtime (You can do the same with the levels).
Edit: I´m reporting the issue in github, so, please, wait any response from any dev before change the codebase of your game...