Den ekstra 0 tilføjes, fordi hele den værdi, du indstiller den til, er ulige. SQL Server vil fylde det med et ekstra 0 for at gøre det jævnt.
declare @varmax varbinary(max)
set @varmax = 0x1234567 --odd
select @varmax --returns 0x01234567 with the padded 0
set @varmax = 0x12345678 --even
select @varmax --returns 0x12345678
Din 9 bliver slettet, fordi du indtaster et ulige antal bytes, der fylder maxværdien. Så der indsættes et 0, men dette overskrider det maksimale antal bytes og er derfor også trunkeret, ser det ud til. Jeg var i stand til at replikere din fejl... men kender ikke en vej uden om det endnu.
Her er den værdi, jeg brugte til din test. Ignorer resultaterne... men du kan kopiere dem til din egen SSMS og se det korrekte output.