I was originally registering my serializer, but after updating to 1.6 I starting seeing an error on the call to RegisterSerializer. Unbeknownst to me that code is being executed multiple times.
So solve the above mentioned error I wrapped that registration code with a Serializer lookup:
if(BsonSerializer.LookupSerializer(typeof(NameValueCollection)) == null)
The lookup always returned EnumerableSerializer. Seems that was a mistake; Lookup is just finding whatever it would actually end up using and as a result registers that as the serializer. I didn't think about looking to see if RegisterSerializer implemented something different/new to throw errors on duplicated registration (which based off my previous success with this code on 1.4 I am thinking it didn't previously).
Thanks for re-enforcing my thought that there was nothing explicitly registering EnumerableSerializer for NameValueCollection. For now I've wrapped the code in a try/catch and ignored a Serialization error and I am past that issue. Guess I have a new todo to find why this is being called more than once. Thanks for the help Robert, I'll see if I can figure out the internals enough to add my custom Serializer to the driver itself and generate a pull request (Don't hold your breath though I just moved into a new house so recreational programming sort of on hold right now :( ) .