I found out it is because of exactly one extra byte from my Byte array. The right code should be
Dim byt As Byte()
ReDim byt(UploadControl.PostedFile.InputStream.Length - 1)
UploadControl.PostedFile.InputStream.Seek(0, SeekOrigin.Begin)
UploadControl.PostedFile.InputStream.Read(byt, 0, UploadControl.PostedFile.InputStream.Length - 1)
UploadControl.PostedFile.InputStream.Close()
It seems only Office 2010 documents run into trouble with this extra byte (by design?). PDF, Office 97-2003 and others aren't.