That was my assumption, too. They do memoize the length, but I'm sure those bytes add up, having run into OutOfMemoryExceptions building huge amounts of strings before.
http://blogs.msdn.com/b/ericlippert/archive/2011/07/19/strin...
This lets them interoperate with OLE Automation.