Prior to SharePoint 2013, Microsoft used sparse columns. It made for massive tables and was poor design.
Moving to XML blobs for user-defined schemas was the correct choice. The table schema became significantly smaller and user-defined schemas (for Lists/Libraries) could become much more complex.