Ooh, you're right. Yeesh, I get so used to everyone else using MySQL that I miss it when someone doesn't use MySQL. MyBAD.
Looking around, I found a page on the subject here. So varchar(8000) was introduced in SQL Server 7.0, and prior to that the limit was 255. PHP's page on [man]mssql[/man] notes that it uses Microsoft's library written for version 6 - which still had a 255-character limit on varchars.
So that's where the truncation is happening. (Incidentally, afterwards I tried searching that [man]mssql[/man] manual page for "8000" and found exactly this description.)