Why does the GS1 DataMatrix encode diagonally instead of vertically or horizontally? Perhaps this is the wrong exchange, so if there is a better place to post this please tell me!

The DataMatrix encodes diagonally in a sort of zig zag pattern, as shown below.



Why don't they encode horizontally or vertically, like how it's done in QR Codes? If they did this it would appear to eliminate the need for confusing diagonal wrapping. QR code encoding algorithm for reference below:
Not a full answer, but this AMS column considers the same question:
&quot;The way in which bytes are stored as bitten squares might seem a bit peculiar, but if you think about how errors occur in the transmission of data matrices (for example poor printing, postage cancellation), it makes sense. The scheme is designed so that the minimum number of bytes are affected by such errors. Other features (the funny way in which `unrandomization' is applied) are not so clearly advantageous, and are pretty much a mystery to me.&quot;
http://www.ams.org/publicoutreach/feature-column/fcarc-data-matrix