Ich achte eigentlich darauf, dass meine Units im Normalfall (mit Whitespaces und Dokumentation) nicht länger als 2000-3000 Zeilen werden. Wenn man seinen Code dann nicht sinnvoll aufteilen kann, so hat man irgendwo einen Designfehler gemacht. Zudem sollten die einzelnen Teile relativ wenige Dependencies haben (am besten nur zu so was wie SysUtils, Classes, Types etc.). Wenn man sich daran hält, bekommt man meistens automatisch schönen, modularen Code, der sich einfach warten lässt.
Ausnahmen von dieser Regel sind in der Tat kompakte Bibliotheken mit oft gebrauchten Funktionen (sowas wie SysUtils, Classes,
XML-Parser, etc.), für die man nicht dutzende einzelne Units einbinden möchte.