The Data Cursor displays color values as they are displayed, rather than as the image data is stored. So for a grayscale image, or even binary image, RGB values will still be displayed, because that is how the color is actually shown. In both of those cases, though, all three of the red, green, and blue values should be the same.
This is similar to why the RGB values may differ from the index value in a grayscale image. For example:
I = 0.5*ones(100);
If you put a data cursor anywhere, the index will be 0.5, but the RGB values will all be 0.502. This is because 0.502 is the closest value to that index in the colormap used for the display of the colors.
In short, RGB values are expected to be displayed. If you want to know what grayscale intensity value is being displayed in that pixel, use any of the RGB values. If you want to know what data is in the original image (fed to "imshow"), use the index value.