С MSDN :
Есть две причины для реализации этого интерфейса. Во-первых, это управление тем, как ваш объект сериализуется или десериализуется с помощью XmlSerializer. Например, вы можете разбивать данные на байты вместо буферизации больших наборов данных, а также избегать инфляции, возникающей при кодировании данных с использованием кодировки Base64.
Как реализация IXmlSerializable позволяет мне избежать инфляции размера base64?
Я имею в виду, представьте, что я реализовал IXmlSerializable, и я хочу записать байтовый массив в XmlWriter. Насколько мне известно, наименее раздувающий способ сделать это - XmlWriter.WriteBase64 - поскольку я не могу записать данные напрямую - он будет содержать недействительные байты в XML.