What are all possible ways to stop a zombie from despawning?
There's one, pretty expensive way: Name the zombie using a name tag.
Name tags outside creative mode can be found in treasure chests, or as rare loot when fishing (not actually so rare if using "luck of the sea" enchanted fishing rod).
You rename them using the anvil, and then apply to given mob. Once named, the mob will not despawn. Of course, hostile mobs will remain hostile, mortal and in case of some, like creepers, suicidal, but at least they don't despawn. Additionally, you get monster's name over their head.
Or if you have cheats enabled, you can spawn a mob with the tag {PersistenceRequired:1} with command blocks that prevent the mob from despawning.
The cheapest way to have non-despawning zombie is to have it pick up an item. Only a certain percent of zombies have the ability to pick up items - 20% on hard, 7% on normal, 1% on easy; zombies with initially naturally spawned 'rare drop' items (potatoes, iron ingots) don't count - it must be any item picked up after spawning.
As per the Minecraft Wiki page on Spawning/Despawning, despawning can happen at any time when there is no player within 32 blocks of a mob. There is also the line
"In multiplayer, despawning does not occur while there are no players in the game."
So, your options basically come down to making sure that any time there are players on your server, at least one of them is within 32 blocks of the mob. For vanilla servers, that's about the end of it, though if you're willing to pay for an extra copy, you can probably have an extra copy of the game running 24/7, with that player standing somewhere, probably set to creative mode so they can't die, permanently leaving a small despawn-less radius. It's a bit ugly of a solution, but it'd work.
Or, of course, there's also almost certainly something available in the scrillion Minecraft mods out there that can do this. I personally only really play vanilla, so I can't really comment on those.