The question was "what do you think is the most natural way to think about it", not "how does git represent it".
Plus that definition describes both tags and branches, how do you tell them apart? It’s clearly lacking. Actually that definition fits commits too.
I’d rather use these:
Branch: a pointer that advances
Tag: a permanent pointer
Commit/hash: an even more permanent pointer (because even a force can’t change it) that also describes the changes.