Voltage is potential difference, and current flows because of voltage. So if the voltage is zero, how can current flow through the neutral wire.
You are taking a shortcut when you say, "The voltage is zero."
Voltage is always measured between two points. In electrical engineering, when we say the voltage at point X is V, we actually are measuring the voltage between point X and an implicit other point called "ground".
In the electric power grid, "neutral" is ground, by definition. So the voltage of the neutral wire is always zero... By definition.
The reality is a little different.
If you measure the voltage between any two points on a superconducting wire, you will measure zero volts no matter how much current is flowing, but the neutral wires in the power grid are not superconductors.
If you measure the voltage between two different points on a neutral wire that is carrying current, you will be able to measure a small difference.
Usually, that difference is small enough to be ignored for most purposes. If it's not small enough to be ignored, it means that the neutral wire is too small (diameter) for the amount of current that it's carrying.
current flows because of voltage
Well, yes, but no. Current will flow forever in the windings of a superconducting magnet with no applied voltage at all. It takes voltage to start the current flow, but once the current is flowing in the coil, no voltage is needed to keep it flowing.
Current only stops flowing in the coils of an ordinary electromagnet when the voltage is removed because of the wire's resistance.
It's like the difference between an airplane flying through the air, and a satellite orbiting the Earth far above the atmosphere. The plane won't fly for long if its engine quits because of the resistance it encounters as it moves through the air, but after its initial boost, the satellite will keep orbiting forever.
The key thing to remember here is that we are talking about an ideal wire. This means that there is (effectively) no resistance in the wire, and therefore no voltage drop along the wire. Now if there is a voltage difference between the two ends of the wire, that induces a constant electric field along the wire, causing current to flow.