Für mich klingt es auch sehr danach, als wäre ein zur Laufzeit laden eher weniger das, was wirklich notwendig ist. Es gibt zwar Anwendungsfälle, in denen man derartige Dinge machen würde (bspw. ein Plugin-System), allerdings würde man in einem solchen Fall wissen, dass man die Bibliothek zur Laufzeit nachgeladen werden muss und könnte bereits richtig danach suchen.
Abgesehen davon solltest du nicht so kryptische Namen wie "Program1", "Program2" und "Library1" verwenden, sondern Namen, die den richtigen Verwendungszwecken entsprechen.
Ein Beispiel könnte "Game" (Awendung), "Editor" (Anwendung) und "Eingine"/"CoreCode"/... (Bibliothek) sein. In diesem Fall würde ein normales Einbinden reichen.
Ein anderes wäre "CMS" (Anwendung), "IDE" (Anwendung) und "Erweiterung"/"Plugin" (Bibliothek). In einem solchen Fall wäre wahrscheinlich ein Einbinden zur Laufzeit erforderlich, da die Erweiterungen auch von anderen Leuten nachträglich erstellt werden können.
Da das nicht aus den Namen ersichtlich ist, kann man nur raten, was gemeint sein könnte.