As far as I know, the only way (without code) to share assemblies in ASP.NET is the GAC (or maintain a copy local to each site and make sure each is up to date) like you said.
It might be more trobule than it's worth, but is there any chance of writing a single assembly that COULD be loaded into the GAC on your web servers?
My thinking is that you could write a single assembly in the GAC that would, through conventional references or reflection, marshall your request for objects from the other shared assemblies on your shared drive.
That way you would have minimal maintenance headaches for the assemblies in the shared folder, and really only have to worry about keep the single assembly in the GAC up to date.
...writing the code for that assembly could always wind up being more trouble than it's worth though.