I am pretty sure that the servers store the datas of each member. If it were to scan the list of members and find similar matches, then it could automatically put a interface of the profile in the name. If possible, it could also send a notification to the user who has been tagged.
I got this idea from facebook as to how they tag people in their posts if their username is typed.
It's different on Facebook. On Facebook you have a list of friends in addition to people communicating in the thread. When you begin typing someone's name, it doesn't suggest everyone on Facebook, only people relevant to you. Facebook keeps all of this information readily available because it is used so often.
This won't be as straight forward on GTAForums. First of all, GTAForums has no such information readily available, as it is not needed. If we assume that the information should contain all members and not just people in a given thread (you may want to refer to someone who has not yet participated in the thread), then we'll soon run into too long a list for both you and the server to handle.
If you are proposing to do it the way Facebook does, then after having typed some characters (say 3), the system will begin to look for members who fill that pattern. And given the combinations of names on GTAForums, almost every combination of 3 characters will yield a result. And since the system cannot predict when you are going to include someone's name, it'll have to check for every word you write, and it would be a huge drain on the system's resources.
Your first proposal seems more modest, because that at least requires you to indicate to the system that you are about to write a username, start with @ and then type the name. But the list of people would still be massive, particularly yours with such a common start.
And it seems like something that could easily be abused for no real reason. However, it might be doable to do only for people who has posted in a given thread, but then it might also be slightly less relevant.