A couple of alternative approaches include:
=LET(
   a, A1:E4,
   b, ISBLANK(a),
   n, COLUMNS(a),
   i, SEQUENCE(ROWS(a)),
   j, SEQUENCE(, n),
   WRAPROWS(SORTBY(TOCOL(IF(b, "", a)), TOCOL(IF(j, i)), 1, TOCOL(IF(b, n + 1, j)), 1), n)
)
And:
=LET(
   a, BYROW(A1:E4, LAMBDA(r, TEXTJOIN("|",, COUNTA(r), r))),
   n, --TEXTBEFORE(a, "|"),
   m, MAX(n),
   TEXTSPLIT(TEXTAFTER(a & REPT("|", 1 + m - n), "|", SEQUENCE(, m)), "|")
)
Adjust the range reference as needed.