Having a Map that auto-creates entries on get() was simply a big mistake. It breaks type-safety (you can use it to store a key in the map that isn't of the map's key type!). Bad things will happen if that Map accidentally gets passed to another Map's equals() method. Common idioms for Map usage (in the absence of null values) are based on the assumption of interchangeability of containsKey(k) and (get(k) != null), and those coding patterns will break. Etc.
We studied this issue very closely, and have concluded that our library will be easier to use when collections are just collections, iterators are just iterators, and things that are fancier than those have public types that convey their behavior sufficiently. My personal opinion is that your library will also be better off if you stop exposing Maps that don't act like Maps, but it's your right to do that if you want (Guava simply isn't going to help you do it anymore).
I am sorry that our fixing this mistake has caused you trouble! But I still feel we had to fix it.
--
Kevin Bourrillion @ Google