The answer to your question is no, referenced 3rd party assemblies do not need to be registered in the GAC.  .NET does look in the GAC first for the assembly, but if it doesn't find it it proceeds to check private paths such as the same folder as the parent assembly and bin folders.

Have a look at the answer provided here: http://stackoverflow.com/questions/49972/in-what-order-are-locations-searched-to-load-referenced-dlls.  It explains the order of locations that .NET searches to load referenced assemblies.