A Zombie killing a name tagged Villager in Hard difficulty while the player is > 128 blocks away works unexpectedly.
What I expected to happen was...:
The Zombie kills the Villager and converts it to a name tagged Zombie Villager, preventing despawning. This is what happens if the player is close by when they die.
What actually happened was...:
The Zombie kills the Villager and converts it to a Zombie Villager, which despawns before the name tagged/Persistence state can be applied.
Steps to Reproduce:
1. Create a 4x4 enclosure.
2. Spawn a Zombie in the enclosure and apply a Name Tag to it to prevent despawning.
3. Spawn a Villager in the enclosure and apply a Name Tag to it.
4. /tp ~ ~130 ~ before the Zombie can kill the Villager.
5. Fall back down after 10-15 seconds, no Zombie Villager should be in the enclosure.
Linked issues
Comments

I would argue that this is NOT a duplicate of MC-88967 – CustomName is already a NBT tag that is transferred between entities. Fixing the fact that certain NBT tags aren't programmed to transfer won't change the issue that the despawn check happens after the new entity is created but before the NBT tag(s) are applied.