A column offset array is row metadata that records where each variable-length column begins. Because those values can have different lengths, the offsets let SQL Server determine where one value ends and the next begins. section 3.2
Each variable-length column requires a 2-byte offset, even when it contains NULL. Consequently, VARCHAR(10) can use 12 bytes when storing ten characters, while CHAR(10) uses 10 bytes in the stated comparison. section 3.2
