well, I always need them to be visible, either animated or frozen, depending on the conditions.
I think it has to do with the resource material being paused, because the Particles2D node itself works as it should (I think)
I ended up manually playing with the pause mode and unpausing like so:
func semi_process():
$Rain.pause_mode = 2
$YSort/House1/RainParticles.pause_mode = 2
$YSort/House2/RainParticles.pause_mode = 2
$YSort/House3/RainParticles.pause_mode = 2
$YSort/House4/RainParticles.pause_mode = 2
get_tree().paused = false
get_tree().paused = true #I hate this
$YSort/House1/RainParticles.pause_mode = 0
$YSort/House2/RainParticles.pause_mode = 0
$YSort/House3/RainParticles.pause_mode = 0
$YSort/House4/RainParticles.pause_mode = 0
get_tree().paused = false and then true happens so rapidly, that it is visually seemless to the user. so as stupid as it is, it works.