If I recall correctly for passenger ships the GRT is in fact a measure of volume based on cubic metres, rather than a true weight measure so a lot of the apparent discrepancies will be due to the large areas which are enclosed but virtually empty spaces.
Think of all those extra decks on top of modern ships - those are mostly cabins, so effectively empty boxes.
If you bridged the gap between the twin accommodation blocks of one of the Oasis class vessels with a lightweight plastic covering that would perhaps weight a couple of hundred tonnes, you would be enclosing all that empty space between the two blocks and you would immediately get a GRT increase of several tens of thousands of tonnes as a result.
As to why it is done this way rather than a measure of displacement, i.e. the true weight, I am not sure.