If you want the setters and getters of exported variables to be called in the Editor, you need too make the script a tool script (by putting the keyword "tool" somewhere in it, generally at the top). In your case, you probably need both the parent and the child script to be tools.
Other than that, your reasoning seems sound. The parent defines a function to be called on set, and the child overrides that function.
If you are doing a lot of setget, you might want to look into Object._set() and _get() too. They are practical when you have many variables with similar setters and getters.
Sorry, I understood both parent and child where Scripts. It appears that overriding set_zoom does nothing, you can use _set instead:
func _set(property: String, value) -> bool:
if property == "zoom":
zoom = value
PS: Please include your code directly in your question instead of linking to it, when possible. You can either use the builtin buttons, or select the code in Godot, press tab to indent it, and paste with the extra indentation level, for markdown to recognize it as code.