In EOS, everyone votes (delegates) for who they want the block producers to be. The 21 entities who have the most votes ONLY get to be block producers. At anytime people can change their vote to change who the 21 block producers will be. If they make a code change, the number of block producers (21) could be changed upward, but right now, it will be fixed at 21. This makes the system somewhat centralized, this also makes the system fast.
In Cardano, (afaik) anyone can be a block producer. Chance of you being block producer at for any given block is proportional to your ADA holding. You can give your chance to be block producer to someone else (delegate), or keep it for yourself.
These are the main differences afaik.
By limiting block producers to a small known fixed set, EOS will be faster, but ADA will be more decentralized, with more block producers, and block producers joining and leaving the system on an adhoc basis.
I don’t know enough about NEO.