This is simply not true of Infocom, in which only the current state is
preserved. UNDO is implemented by the crude technique of doing a SAVE into
RAM after every move.
The situation within more complex games is also more involved than you think.
In most, including authentic versions of the original Adventure, other people,
robots, and various things like that contain their own logical programming,
sometimes with as much freedom to act as the player. (In Galactic
Civilizations -- I realize it is not really IF, but it's an interesting case
-- your opponents are real artificial intelligences who are playing by the
same rules you are.)
This does not mean that a persistent-tree technique such as you wish is
impossible. With modern OO techniques, it can be done quite easily. However,
in order to avoid repeating actions, it is necessary to splice the tree, and
that may not be feasible in the general case. I'm not really sure that the
approach would, in the long run, gain anything.
Since I play Infocom games on OS/2, using my port of ZIP, I can name save
files whatever I want (up to 254 characters), and I can get a list of them at
any time. This helps.