Хотя то, что вы предлагаете, решает один набор проблем (управление ссылками на события и предотвращение утечек памяти), оно может открыть новый набор проблем.
Одна проблема, которую я вижу в процессе обработки событий, если исходный объект является сборщиком мусора (поскольку он содержался только со слабой ссылкой), любой код, который обращается к исходному объекту, приведет к исключению нулевой ссылки. Вы можете утверждать, что обработчик событий либо не должен обращаться к исходному объекту, либо он должен иметь надежную ссылку, но можно утверждать, что это может быть хуже, чем та, которую вы пытаетесь решить в первую очередь.