The Initialize method in ReportViewer.cs is called from both the OnLoaded and OnApplyTemplate methods, which in turn calls the AttachModelEventHandlers method. This leads to it adding the event handlers to the model twice every time it is loaded. The DetachModelEventHandlers is only called once (in the OnUnloaded method), so if you keep unloading and reloading the control, it adds 2 event handler invocations but removes only one. This means each one is called at least twice (if you have only loaded the control once), then 3, 4, 5, etc times if you keep unloading and reloading it.
I've worked around this by adding code to my wrapper class to prune the duplicated handlers for now, but this needs fixing in the base code.