Nif files seem to be state-saves of the game engine in action. A game engine is based around efficiently displaying a scene-graph representation of the game world. This scene graph is composed of various nodes which hold geometry, control animation, etc. If you want to save the state of the engine at a specific moment, each node would have to write the information it contains to a file in such a way that the entire graph could be re-created. That's what the Nif file is. The scene graph is descended and, as each node is visited, it writes itself out to a file. On load, the reverse happens.