Den extra nollan läggs till eftersom hela värdet du ställer in det på är udda. SQL Server fyller den med en extra 0 för att göra den jämn.
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 tas bort eftersom du anger ett udda antal byte som fyller maxvärdet. Så, en 0 infogas men detta svämmar över det maximala antalet byte och är därför också trunkerat verkar det som. Jag kunde replikera ditt fel... men vet inte en väg runt det än.
Här är värdet jag använde för ditt test. Ignorera resultaten... men du kan kopiera dem till ditt eget SSMS och se rätt utdata.