The more native way is of course to use a feature of many Unix file systems to save what is called extended attributes or just xattrs. You can query, set, modify and remove these attributes from files using the
setfattr command line programs (under Linux, don't know much about how *BSD deals with these); their man-pages should be interesting to you.
However, that's not really that useful – after all, you then have a lot of files that you somehow tagged with some information, but will need to sit on a console to try and get them out again.
So, what you actually need is not only a way of tagging files, you need something to actually do something useful with that information, manage it and so forth.
What you describe is functionally a movie database, and as such, probably a media server is the most useful solution. If you can restrict the number of possible platforms to one (or maybe two) like x86_64 (and maybe arm64?), you could also just put a container on your external hard drive that just contains all that is needed to run the movie database software. So your friend can just start that (don't know what shape something like that takes – maybe a DLNA server?). I've got no experience with such things.
So, what I'd do, is actually sit down and write the software you want. Sounds crazy, but is quite OK, considering any modern PC-style hardware with a Unix on it will have access to some halfway modern Python3.
As described above, you could use extended file system attributes to store the information about the file – within the file "filesystem entry" itself. That way it stays with the file when you move that on the drive.
However, since, as you said, you might want to run some kind of GUI/TUI from the external drive, anyways, there's not that much benefit to that. So, a simple SQLite database (
sqlite3 comes with every Python installation) would do just fine. Then, you'd just write a short tool to look for the database file, look for the media files relative to that, then add some functions to scan for files that aren't yet part of the database, add them, maybe query from IMDB's API. Of course, a nice query interface would be nice, as well, so you could either go for "text adventure" style, or you could use
Textual (new, exciting, probably a bit experimental) or
urwid; both are pure Python, if I'm not mistaken, so running things should be trivial on different machines!