In that case whoever is linking the script is “breaking” it, I’d say. There’s stuff that is simply outside the responsibilities of the script/maintainer.
If you start worrying about that for “simple” scripts, the logic for handling that is quickly going to outgrow the initial logic itself.
Besides, hard links don't have a canonical target, they are all equally correct names for the file. So even if the script author wanted to support the same technique for hard links there is no reasonable way to do it.
I think symlinks (or hard links, doesn't matter) are the actual problem here. It is actually completely OK for your code to make certain assumptions about how it's going to be invoked, and otherwise break (loudly, and in an obvious way, if possible).