Don't move AudioStreamPlayer3D from an audio bus to another. Instead modify the audio bus on runtime. You should only have to modify one or two audio buses when leaving or entering an area. I remind you that usually we have the Master audio bus, and other audio buses routed to Master, but you can route a bus to another instead.
See AudioServer and Audio Buses.
You can get the index of a bus by name like this:
var bus_index = AudioServer.get_bus_index(bus_name);
-1 if the bus does not exist.
You can change the volume of the audio bus like this:
You can set the effects you want in the audio bus from the editor, and then enable or disable them like this:
AudioServer.set_bus_effect_enabled(bus_index, effect_index, enabled);
I encourage to set the effects you want in the editor and simply enable or disable them. However, you can also add and remove effects with
AudioServer.remove_bus_effect respectively. If you are adding and removing audio effects at runtime I suggest to only do one per audio bus, and take advantage of the routing.
Know that AudioEffects are resources. I suggest to export a resource variable from your script where you setup the audio effect:
export(AudioEffect) var audio_effect;
Then you can use the IDE to create the audio effect you want.