I think isVisible should not be called after detach to prevent model reloads.
I found one call to isVisible after detach in method ComponentRequestTarget#respond(RequestCycle). That method initiates a detach and then calls page.endComponentRender. This leads to a call to Page#checkRendering which calls isVisibleInHierarchy() and from there isVisible(). Method checkRendering only does something when the debug setting 'componentUseCheck' is enabled (which according to the javadoc is true by default).
Short term workaround: set debug setting 'componentUseCheck' to false.