Thanks for describing the problem and your workaround. The problem occurs because the EntityCacheState is serialized and deserialized using the DataContractSerializer, which is very strict about type definitions and "known" types. The ECS is essentially a serializable list of entities and some state, including any temporary IDs. Because the ECS has special handling for temporary IDs it also includes the IdGenerator in its serialized state. You can see this if you save the ECS in text format - there's more there than just simple entity definitions.
We may look into some sort of lightweight ECS for those use cases when an IdGenerator isn't ever wanted, but for now this is more of a known, and sometimes irritating, situation and not a bug we can easily fix. If you only need serialized entities, and can attach or add them to an EM manually, then you can also serialize a List<Entity> using the SerializationFns, and not go through the CacheStateManager/EntityCacheState.