GIF only supports full or 0 opacity, it doesn't support partial opacity. On the grey background, every pixel has full opacity because there's a solid background, but with a transparent background, that's not the case. So, Aseprite rounds the opacities of your pixels to the nearest valid value, which means all pixels under 50% opacity become completely transparent, and the more visible ones are given full opacity.