If I deploy a BizTalk application from within Visual Studio using the "Deploy Solution" menu option, the DLL goes into the GAC.
But if I create a MSI by using the BizTalk admin console, remove all traces of the application and DLL, and then import and install via MSI, there is a copy in the GAC, and another copy in the selected install directory.
The excellent post ... In BizTalk why is an MSI file both imported and installed? ... details why there is the two steps to both import and install the MSI, but not why there is the additional copy of the DLL.
So why is there the second copy of the DLL?