I found this huge glitch although some may not consider it a glitch! As you know nearly everything in pokemon games are coded with hex numbers. Some items, attacks, pokemon trainers, and pokemon have the same hex value. like gyarados's hex is 22, vine whip's is 22, and cascade's is 22. But the pokemon doesn't always have the same hex value attack. I don't have a g/s/c so I can't prove its holding an item of same hex. but if someone can trade one to g/s/c and post it here it would help my research. (be sure to include what item it was holding.)
Anyway the main reason is back to hex values pokemon that need stones to evolve don't need the stone if they grow enough levels and the pokemon with the same hex as an item is second in your party.
like moon stone is exeggutor, water stone is onix, leaf stone is psyduck, thunder stone is growlith, and fire stone is the mew trick stat of 32 missingno. just have them second in your party and the stone needing pokemon in front. raise it some levels and poof it evolves!
Anyway the main reason is back to hex values pokemon that need stones to evolve don't need the stone if they grow enough levels and the pokemon with the same hex as an item is second in your party.
like moon stone is exeggutor, water stone is onix, leaf stone is psyduck, thunder stone is growlith, and fire stone is the mew trick stat of 32 missingno. just have them second in your party and the stone needing pokemon in front. raise it some levels and poof it evolves!