Is there an underling difference between TIMESTAMP and ROWVERSION when creating columns with each?
I can't reproduce this on SQL Server 2017 or 2019 with Visual Studio 2019, so it would be interesting to know:


what version of sqlpackage.exe are you using?
what version of Visual Studio and SSDT are you using?
what version of SQL Server are you targeting?
what is the actual table definition in SSDT?
what options are you specifying when publishing?


Despite not being able to repro the issue, I do have some suggestions.

Whenever SSDT is doing some repetitive or redundant like this, I try to make sure that my definition in the model (SSDT project) matches the target, as sometimes things get transformed prior to being stored in SQL Server's metadata.

As you noted, the metadata is out of sync in this case.  The column is stored as timestamp regardless of whether you specify rowversion or timestamp in the CREATE TABLE statement.


  However, when enquiring on the column type, both alter statements result in the DATA_TYPE being reported as [timestamp]:


This behavior is related to these types being data type synonyms.  Synonyms don't leave any trace that one was used in a DDL statement:


  However, after the object is created, the synonyms have no visibility. When the object is created, the object is assigned the base data type that is associated with the synonym. There's no record that the synonym was specified in the statement that created the object.


What you're reporting is backwards from what I would expect, but it's possible that SSDT is trying to enforce this deprecation warning from the rowversion docs page:


  The timestamp syntax is deprecated. This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.


I'd suggest you update the SSDT project to use rowversion to avoid this problem.