Po pierwsze, dodanie listenera przy pomocy atrybutu [on*] może się odwoływać do dowolnej funkcji, która jest dostępna z poziomu globalnego scope. To oznacza, że też można stworzyć sytuację, w której listener będzie siedział w pamięci nawet po usunięciu elementu. Tak samo mogę sobie zapisać element z atrybutem [on*] do zmiennej i spowodować wyciek pamięci po usunięciu takiego elementu z DOM. Sposób przypięcia listenera w żaden sposób na to nie wpływa.
Po drugie, istnieją techniki, w których listener jest bezpośrednio powiązany z samym elementem, co pozwala na dość eleganckie sprzątanie po takim elemencie.
Po trzecie, w większości przypadków GC (ani nawet wydajność jako taka) nie będzie największym problemem przy wyborze sposobu przypinania zdarzeń. Atrybuty nie pozwalają delegować zdarzeń, nie pozwalają przechwytywać zdarzeń, wymagają de facto przypinania do każdego elementu osobno. Dodatkowo działają jak eval() uruchomiony w globalnym scope – i to jeszcze z kilkoma dołożonymi dziwactwami. Nie wspominając już o słabej integracji z CSP. Liczba wad zdecydowanie przewyższa liczbę "zalet".