Lizard was 32K banking, which is basically why I did it that way.
1. No fixed bank meant that I wanted to duplicate the same code in several banks. I can't link code with the same name in multiple places, so this would have been tricky to solve with all of the banks in a single link step.
2. I was using the label files (-Ln) for debug symbols, which the omit segment/bank information I would have needed to separate them by bank. This could have been solved by using the debug file (--dbgfile) output instead, but I already had the (simpler) label file parsing done from previous work, and unless I could solve the problem 1 there wasn't any point to rewriting it.
So, that's the reason, but they wouldn't have applied to a mapper with a fixed bank. 1 is solvable; in
MOON8 (source is at bottom of page) I did use a single link despite 32K banking, and duplicated code was accommodated by wrapping it in a scope for each bank, and using .include for the duplicated stuff instead of separate assembly objects. Either way has advantages and drawbacks, and there are a bunch of other ways to address this.
For 2, at the time I started Lizard, the debug file format was still being worked on in CC65, so I didn't want to use it. At this point it's settled down and I'll be using it instead for future projects.