This is just a guess.
The vessel names where there are trailing @ symbols likely have the vessel name field prefilled with "null" characters and the name of the vessel overwrites the nulls. If the vessel name is shorter than the field, the nulls are not overwritten and likely are being sent out in the fixed size ASCII string.
"null" and the various control characters can have undesired effects on the presentation of text, so downstream systems, including the application being used by the user can filter those characters out or can modify the characters to be some character that can be displayed. Doing the latter makes the field a constant width.
One way of modifying the control characters is to set the most significant bit of the control characters. Doing this to the ASCII "null" character turns it into a @ character.
Again, this is only a guess that is based on me doing this for a 1982 university computer programming class.
Eric, WB6TIX