I know this is a very old thread, but I ran into the same issue:
My example image shows the borders very clearly because I placed several sprites on top of each other. The darker lines in the overlap of the white sprites show what the edge looks like with one sprite. These are four different image types, all containing only white pixels.
Bottom: RGB PNG, with outer pixels having partial alpha, a "semi-hard" edge.
Right: RGB PNG, with lots of outer pixels having low alpha, a "very soft" edge. The softness is lost because I placed many sprites over each other, although the border does not show up.
Top: Indexed PNG, no semi-alpha, so a very "hard" edge.
Left: Indexed GIF, no semi-alpha, so a very "hard" edge.
Since very soft borders aren't an option for my sprites (I don't plan to use layers of sprites), I'm going to have to switch to GIF. That does remove the option for me to use RGB, so if there is a solution to this, I would be happy to hear about it!