I remember reading how Dropbox and other file sharing sites used hashing to create single instances of popular files and then just used pointers from accounts with that file to save disk space.
I would imagine a LOT of chess games probably start out the same and you can therefore store a pointer to where the game is on a subset of potential game starts and then write the difference as you branch out.
I may be underestimating the possible start conditions and/or the metadata storage cost (e.g. time in the game of each move doesn't go away).