The Nes version i can understand , my guess is that first they wanted it to lose energy on impact, but it was buggy and instead of taking 2 bars of energy it could take the whole thing. This was fixed in Genesis version and the Gameboy version.
My theory was that MegaMan was supposed to bounce away from the enemy on every impact, whether or not that enemy was immune, but they weren't able to get the "bounce away" routine to kick in before the "get hurt" routine most of the time. It just seems unfair that you would have to get hurt from using Top Spin before you know it's ineffective.
Using up all the energy is another thing that makes it bad for beginners. If you know why it happens, you can avoid it: Just don't use it on an immune enemy while you're flashing from hit damage, or on a Robot Master while it's flashing from hit damage. As long as you're inside an enemy while spinning, the game will keep deducting Top Spin energy every frame, and it won't be interrupted by another hit until you stop flashing. This is also why it's "super effective" on the MeggerClones and Dr. Wily's final form after you've been hit: Fortress bosses don't get invincibility flashing, so the game deducts from
their energy once every frame, making the actual amount per hit pretty moot at that speed.
But however it was meant to work, the Genesis and Game Boy games changed Top Spin just enough to still resemble the NES version's workings but without the quick drains, making it easier for beginners, but a little more boring...