There is a very big difference in the two pieces of code. The non macro code can only handle one sub-matrix at a time. The macro code splits the matrix in sub-matrices to be used in calculations afterwards (for example s1 * s2). All sub-matrices are available at the same time. You will need macro code to make that happen.
Depending on the business need, the relevant code should be selected.

P.S. It was not the lack of familiarity with SAS/IML, just the need for multiplying different sub-matrices afterwards that made use of macro code necessary.