After a lot of googling, I've found a way to use a JavaScript bookmarklet to give the macro bar multiple rows.
To use it, create a new bookmark and enter the following code into the URL field:
javascript:(function(){$("#playerzone .player").css("display", "none");$("#macrobar_macros").css("margin", "20 px");$("#macrobar_macros").css("white-space", "normal");$("#macrobar_macros").css("line-height", "3");$("#macrobar_macros").css("display", "block");$("#macrobar").css("height", "auto");$("#macrobar_macros .macrobox .btn").each(function() {$(this).text($(this).text().replace(/[^:]+: /, ""));});$("#initiativewindow").css("width", "100px").parent().css("width", "100px");})();
The marklet turns my long macro bar from this:
To this:
When active, the multi-row macro bar adds new lines to accommodate macros.
This method requires re-using the marklet when refreshing or changing pages. I'm sure this code could be adapted for use in Monkeywrench or Stylish so it's automatically applied, but I've no idea how.
(It also once again re-opens the repeatedly asked question why this simple CSS tweak isn't part of Roll20's code.)