I haven't read a single line of actual code, but why are you even using 1 byte of the 255 bytes to declare the length? LENGTH() would give you the # bytes, CHAR_LENGTH() the # characters. But even if you can't use this, for example because it'd be too slow, why not store the length in a separate column, and use a TEXT data type for the actual title. TEXT can store up to 4GB, as LONGTEXT. Someone that's also missing from this article is the reasoning behind the statement "we should pick the maximum we can theoretically store". Why would you need multiple gigabytes of space for titles?
Talk:Page title size limitations
BLOB and TEXT
Just in case the author of this article isn't aware, "BLOB and TEXT columns only contribute 9 to 12 bytes toward the row size limit because their contents are stored separately from the rest of the row." Which, by the way, is the same way I suggested you store the title length, if you actually need to store it.
but why are you even using 1 byte of the 255 bytes to declare the length
"We" (MediaWiki) doesn't. MySQL does, as it is using bytes for the
varchar column data.