If the event handlers close over references to GUI objects and those objects also have references to the event handlers (because they're attached to events), there is a cycle that won't be collected with pure reference counting. This used to be a big problem in JS on Internet Explorer 7 and earlier, where the DOM was based on reference-counted COM objects.
So it would be nice to have the GC handle the wrapping Kotlin objects and have the destructors destroy the wrapped native objects. But maybe there is a better way, and I have my head stuck in the 90s.