I am also having issues with the graphic's visible property, in my case 2D. If a graphic is added to a GraphicsLayer with a visible value = false, the graphic is still displayed. There seems to be timing issue with setting the Graphics visible property as if it is done after a certain time, the graphic's visibility will match that of the visible property.
In this JS Bin example, the polygon's visible property is set to false but is still visible in 2D. The point graphic's visible property is toggled every second and this works in both 2D and 3D.