Fl_Image::scale() is counter-intuitive (at least to me). It does not modify the loaded image, but "merely" modifies the internal height/width values! Subsequent uses of the image (e.g. get()) as you found, refer to those internal values but don't modify the original image. Thus, original() is correctly true. [Note I said Fl_Image::scale(), not Fl_Shared_Image::scale() as there is no overload].
You don't want to invoke scale() at all. For each pane you are showing the image, invoke Fl_Shared_Image::draw() with the target dimensions. I.e. when showing the thumbnail, call draw(x,y,thumbw,thumbh), and when showing the full size image, call draw(x,y). In each case, the image should be drawn to the desired size, yet the original image is still unmodified.
Hope that helps,
Kevin