### Godot version

v4.1.beta

### System information

Windows 10

### Issue description

```
        virtual Ref<Script> get_script() const override {
                if (native_info->get_script_func) {
                        GDExtensionObjectPtr script = native_info->get_script_func(instance);
                        return Ref<Script>(reinterpret_cast<Script *>(script));
                }
                return Ref<Script>();
```
Is not creating a functional reference.

GDExtensionObjectPtr is a part of gdextension_interface and is a void pointer to pas data pointers between GDExtesion and Godot Core.

In the images below you are able to see that the extension `reinterpret_cast `works fine.
And that the pointer is passed to core.
However at core `Ref<Script> script_test` stays a NULL value

![image](https://github.com/godotengine/godot/assets/20573784/d4a955d3-4e02-46e2-abf1-ba88cf501e8f)
![image](https://github.com/godotengine/godot/assets/20573784/42a3fbb8-3598-479a-86bc-8b9464624885)
![image](https://github.com/godotengine/godot/assets/20573784/620782c0-192c-4e14-829c-5817ae680378)

I was hoping this would be solved by solving [cpp 1119](https://github.com/godotengine/godot-cpp/issues/1119)



### Steps to reproduce

Create a custom script instance and create it using `internal::gdextension_interface_script_instance_create` and a `GDExtensionScriptInstanceInfo` that only implements `get_property_list_func` and `get_script_func`.

### Minimal reproduction project

Difficult to create a minimal project.
Mostly looking for advice on what to test to find the actual source problem
Object *ret = nullptr;
		GDVIRTUAL_REQUIRED_CALL(_create_script, ret);
		return Object::cast_to<Script>(ret);
	}
	EXBIND0RC(bool, has_named_classes)
	EXBIND0RC(bool, supports_builtin_mode)
	EXBIND0RC(bool, supports_documentation)
	EXBIND0RC(bool, can_inherit_from_file)
	EXBIND2RC(int, find_function, const String &, const String &)
	EXBIND3RC(String, make_function, const String &, const String &, const PackedStringArray &)
	EXBIND3R(Error, open_in_external_editor, const Ref<Script> &, int, int)
	EXBIND0R(bool, overrides_external_editor)
	GDVIRTUAL3RC(Dictionary, _complete_code, const String &, const String &, Object *)
	virtual Error complete_code(const String &p_code, const String &p_path, Object *p_owner, List<CodeCompletionOption> *r_options, bool &r_force, String &r_call_hint) override {
		Dictionary ret;
		GDVIRTUAL_REQUIRED_CALL(_complete_code, p_code, p_path, p_owner, ret);
		if (!ret.has("result")) {
			return ERR_UNAVAILABLE;
		}
		if (r_options != nullptr && ret.has("options")) {
			Array options = ret["options"];
			for (int i = 0; i < options.size(); i++) {
				Dictionary op = options[i];
				CodeCompletionOption option;
				ERR_CONTINUE(!op.has("kind"));
				option.kind = CodeCompletionKind(int(op["kind"]));
				ERR_CONTINUE(!op.has("display"));
				option.display = op["display"];