El 0 adicional se agrega porque el valor total en el que lo está configurando es impar. SQL Server lo rellenará con un 0 adicional para que sea uniforme.
declare @varmax varbinary(max)
set @varmax = 0x1234567 --odd
select @varmax --returns 0x01234567 with the padded 0
set @varmax = 0x12345678 --even
select @varmax --returns 0x12345678
Su 9 se descarta porque está ingresando un número impar de bytes que llena el valor máximo. Entonces, se inserta un 0 pero esto desborda el número máximo de bytes y, por lo tanto, también parece truncado. Pude replicar tu error... pero aún no sé cómo solucionarlo.
Aquí está el valor que usé para su prueba. Ignore los resultados... pero puede copiarlos en su propio SSMS y ver el resultado correcto.