You analysis of what it looks like seems to be exactly right.  I think it must be a bug.  A (sort of ugly) workaround is to removed the unstyled points:

    ListPlot[Style[{#1, #2}, PointSize[Abs[#2]/50], Hue[#2]] & @@@ 
       data] /. Point[{{_, _}, {_, _} ..}] -> {}

![Mathematica graphics](https://i.sstatic.net/jVJJb.png)