Wenn man das alles so liest, benutzen die meisten wohl das Erzeugen zur Laufzeit. Und nicht nur hier. Ich denke aber, das kommt noch von Zeiten des knappen Speichers. Trotz 128 MB und mehr sollte man trotzdem nicht anfangen, so zu programmieren, als sei unendlich viel Speicher vorhanden. Aber die Gefahr besteht trotzdem, daß man etwas nicht mehr freigibt und so dann wieder den Speicherbedarf unnötig in die Höhe treibt.
Und es gibt noch einen Effekt: beim erstmaligen verwenden (automatisch)einer Form, tritt schon eine merkbare Verzögerung auf. Beim zweiten mal nicht mehr. Würde die Form immer von Hand neu erzeugt, gelöscht usw. und die Verzögerung würde dauernd vorhanden sein, so wäre das schon schlechter. Vielleicht wird der Speicher aber doch irgendwann knapp, wenn mans nicht so macht.
D.h., ich bin genauso schlau wie vorher.
Wie meistens ist wohl der goldene Mittelweg gefragt. Der sieht dann so aus, die Forms in 2 Arten aufzuteilen, oft und weniger oft benötigte. Letztere dann immer erst zur Laufzeit erzeugen. Die von Sharky angesprochenen Datenmodule z.B. würde man besser wohl direkt beim Programmstart erzeugen, da man die ohnehin braucht.