Huge Heap Table and table compression on SQL Server 2016
Still i think that the table size is huge for the no. of records.


Why? What makes you say this?


  what it does is stores different version of same entry from another table.


So it holds versions, which could be large or small, especially given:

[Data] [varbinary](max) NOT NULL,

Have you checked the datalength() on the rows to see if you have some large rows in there eating space? 

Seems to me, based on the data the size it is given the function seems reasonable. Versioning is rarely small unless it's just changed bytes and you use various algorithms to understand which bytes, how, and if it builds off previously changed versions or not.