There's only so much that companies can do to provide non-salary compensation (like perks) to contractors and vendors without getting in trouble legally. Blame 80's Microsoft for screwing things up for everybody by abusing their contractors.
My inclination was less that tech companies should abuse their contractors, but that tech companies should actually directly employ people that pretty much solely work for them.
Not implying at all that tech companies are deliberately abusing their contractors. My point was that because Microsoft did do so back in the 80's (and got slammed by the courts for it), now everybody is scared to even appear to treat contractors the same as FTEs.
I don't know all the ins and outs of FTE vs contractor vs vendor (I'm a geek, not an HR person), but presumably there are business reasons for choosing one over the other. "One's cheaper" is an obvious one, but there are probably others (taxes? liability? who knows. me write code).
There are definitely cases where job functions at major tech companies have been converted from vendor/contractor to FTE (Google physical security officers is one I personally know of. Presumably there are others).