If you’re writing a function and it gets big enough to be clumsy, I’m sure you know to break it down into multiple, smaller functions, each of which is comprehensible. Of course this is good practice in any language at all, but it’s especially simple and powerful in functional languages, where you don’t need to worry about side effects: if there’s a chunk of code that you want to split up, you can painlessly move that code verbatim into a new function, taking as parameters whatever locals it needs to operate on. The hardest part of the whole process is coming up with a meaningful name for the new helper function!
Macros can develop similar problems if they grow large enough, so naturally you want to split them up too, right? Just slice out a chunk of the too-large macro, paste it into a new macro, and you’re all set.