Ну, я думаю, что это не имеет значения, если класс загружается с диска или из памяти, за исключением пространства PermGen.
Однако обратите внимание, что проблема может быть не такой серьезной, как вы думаете: каждая функция компилируется один раз. В частности, анонимные функции, которые вы можете увидеть здесь или там, сгенерированные «на лету», компилируются только один раз, и каждый их вызов просто приводит к созданию новых экземпляров этих классов (требуется экземпляр хранить лексический контекст).
Таким образом, следующий код приводит к созданию двух классов (один для create-fn, другой для lambda-fn), независимо от того, какое количество вызовов create-fn будет во время выполнения:
(defn create-fn [n] (fn lambda-fn [x] (add n x)))