How Error-Correcting Codes Shape Data Efficiency