We had a similar issue. Our user controls lived in a directory called "Controls"
In an effort to group related controls some of the user controls were put in subdirectories under the controls directory. We noticed the problem surfaced when a user control in a subdirectory was referring to another usercontrol in the parent directory (eg A SearchList control in the \Controls\SearchItems directory used a ModalDialogue control in the \Controls Directory.
A clone of the ModalDialogue Control was created in the \Controls\SearchItems subdirectory. The new control was given a different name (ModalDialogTest) to be sure to isolate which control was being used. This worked fine. We then hit on the idea of parking the modal dialogue control in its own subdirectory. (out from the parent "\Controls" directory)
A Subdirectory was created "\Controls\Modal". Our ModalDialogue control was created in this subdirectory and it cured the problem. I hope this helps someone out.