"So internally, the system splits up tilemap into chunks. Only dirty chunks are ever rebuilt, and only prefabs in a dirty chunk will get duplicated. You can see the division if you expand the render data in the hierarchy..."
Yea I know. My point is that you claim that once the prefabs are set "The system doesn't keep track of prefabs at runtime after its created them."
Well that just seems strange considering sometimes it duplicates prefabs, other times it doesn't. If the system didn't keep track of prefabs at all I would expect the prefabs to be duplicated every single time a Dirty chunk was rebuilt. This is not the case though. It is ostensibly random. And why deleting one of prefab A removes the all the duplicate prefab A's is also strange. Extra strange is that Prefab B can be deleted and all the duplicate Prefab B's will stay.
Right now I am considering instantiating the prefabs myself like you suggest, so at runtime if a tile has a tile ID I add the prefab at that tiles location and add it to my Dictionary mapping the Tile coordinates to the prefab object. I already do most of this anyway.
"at runtime, never instantiate prefabs after the first time? A simple source change can make that happen." seems interesting, however, long term I think adding the prefabs myself would be better.
So I guess this is just a bug report. I was hoping in the thread I linked that turned into emails some fix was found.