### Godot version

v4.0.alpha11.official [afdae67cc] (when the feature was added) and newer (still happens in RC6)

### System information

Windows 10

### Issue description

I'm unable to handle when the user sets an exported node property (this feature: https://github.com/godotengine/godot/pull/62185) from a setter in the editor (tool script).

I don't know if this is intentional or not, but for me it was unexpected. I had to revert back to `NodePath`s.

### Steps to reproduce

- Create a scene
- Attach a script to a node
- Add `@tool` at the top of the script
- Export a node property with a setter, preferably with an easy way to see if it executed:
	```
	@export var node:Node:
		set (mod_value):
			prints("node", mod_value)
			node = mod_value
	```
- Save, close and open again the scene to make sure the tool script is running in the editor
- Set the node property from the inspector
- Observe that the setter didn't run

The setter is not bypassed when running the game, it is only bypassed in the editor.

We can compare with a `NodePath` property, which setter is not bypassed regardless if it is in the editor or in game runtime.

### Minimal reproduction project

[nodepath.zip](https://github.com/godotengine/godot/files/10840411/nodepath.zip)

spin[i]->set_label(desc[i]);
		default_layout->add_child(spin[i]);
		add_focusable(spin[i]);
		spin[i]->connect("value_changed", callable_mp(this, &EditorPropertyQuaternion::_value_changed).bind(desc[i]));
		if (horizontal) {
			spin[i]->set_h_size_flags(SIZE_EXPAND_FILL);
		}
	}
	warning = memnew(Button);
	warning->set_text(TTR("Temporary Euler may be changed implicitly!"));
	warning->set_clip_text(true);
	warning->connect("pressed", callable_mp(this, &EditorPropertyQuaternion::_warning_pressed));
	warning_dialog = memnew(AcceptDialog);
	add_child(warning_dialog);
	warning_dialog->set_text(TTR("Temporary Euler will not be stored in the object with the original value. Instead, it will be stored as Quaternion with irreversible conversion.\nThis is due to the fact that the result of Euler->Quaternion can be determined uniquely, but the result of Quaternion->Euler can be multi-existent."));
	euler_label = memnew(Label);
	euler_label->set_text("Temporary Euler");
	edit_custom_bc->add_child(warning);
	edit_custom_bc->add_child(edit_custom_layout);
	edit_custom_layout->add_child(euler_label);
	for (int i = 0; i < 3; i++) {
		euler[i] = memnew(EditorSpinSlider);
		euler[i]->set_flat(true);
		euler[i]->set_label(desc[i]);
		edit_custom_layout->add_child(euler[i]);
		add_focusable(euler[i]);
		euler[i]->connect("value_changed", callable_mp(this, &EditorPropertyQuaternion::_custom_value_changed));
		if (horizontal) {
			euler[i]->set_h_size_flags(SIZE_EXPAND_FILL);
		}