You are wanting to interface a statically-typed language to a dynamically-typed one that doesn't compile within the same unit (not even the same time), so interoperating between them will outright require two checks before calling the function: check if the interface exists, and check if the object implements it (even if GDScript had that feature).
has_method or checking inheritance is how you do it today, and it turns out it does both at the same time. If you had an interface system in GDScript, it would still require a check.
While in C#, the first check is never needed because you know it exists, since your code can already compile the mention of
A form of interface was discussed in the next GDScript improvements to come in Godot 4.0, but I'm not sure it will reduce the amount of checks a C# script will need to do in order to call into GDScript.