Possible to add custom TXXX tag (user-defined text)?

Yep, that's what I intend to do but so far I have not yet come across any kind of software to do this in a convenient way. I thought maybe beets could do this but apparently it relies too much on its internal database to simply copy one tag to another. Currently researching id3, this seems to read the tags but I am struggling to copy the tags.

You are completely right, but I even understand the author when they say that they do not want id3 tags as the primary source as for audiobooks, there are apparently many more file formats and they do not have the same tags/capabilities and thus they realy more on sidecar files (which I strongly dislike as I'd rather have the information embedded into the files).
As you said, I'll have to live with it if I want to use both tools, which I intend to do (at least mp3tag, am researching Plex/Jellyfin as replacements for audiobookshelf).

Author of audiobookshelf: "There is more information about the book in Abs than there are meta tags. There is also no standard for specifying multiples. For example, multiple series we are doing as a semicolon delimited string since commas can exist in the series name.
For podcast episodes we store the description as HTML. We may do this for audiobooks eventually as well. There is no good way to store HTML in a meta tag.
The ID3 defined meta tag names don't fit neatly with audiobooks. We use composer for narrator (also semicolon delimited), artist for author.
Depending on the software you can get different results on what meta tags are embedded.
I spent a lot of time trying to figure out standardized meta tags for audiobooks and as it stands now it's insufficient. Having a sidecar file be able to cleanly store all of the data outweighs the negative of having to keep an extra file."

If they have problems with field names I still find the Musicbrainz approach the more straightforward one.
If the developers of the audiobookshelf would still look for standard fields, then a look at INVOLVEDPEOPLE may be enlightening

or misuse UNSYNCEDLYRICS.
The idea to use the name of a standard field as user-defined field looks to me as the non-optimum solution. It would be nice, if the developers would implement a similar treatment as in MP3tag: user-defined fields with that name get transformed into the standard field and the standard field is also read.

That’s true, though.

Also, audiobooks and radio plays (German: “Hörspiele”) require slightly different treatment. I wish streaming services offered separate apps for them, like some do for classical music.