Because the map is encoded as registers, and both the map and registers are Protobuf and that mix causes trouble.
It's really about nesting things all the way and eventually we have a Data we want to store -- and it tries to do so into a TopLevelBlobEncoder which only accept ONE value -- and were not aware of Data the way they should be. We instead attempted to encode it raw which is an unkeyed container, which would fail - since we need a strict blob here.