It's an approximation because it is invariant with angle; true reflection reveals new detail with changed angle. E.g. consider the face of the white cube that is reflecting the yellow block. If we move the camera to the right, in real life we would see the reflection of the green block on the left. But that green block is not stored on the texture map.
I think glossiness can be calculated relatively cheaply on the fly? If you know where the light is I think you can just input the incoming angle and outgoing angle to get the glossiness. Also, I think to a good approximation you can use the same glossiness for the whole surface. This is why it's cheaper than specular reflection, which requires ray tracing for each pixel.
why is a cube map better than a sphere map?
A cube map is generatable by rendering 6 images using a rasterizer, since perspective projection is projection on to a plane.