As mentioned in D1276, CSimulation2's InitGame function requires an argument that contains data that it could fetch itself (as the content of the argument is stored in an instance of CSimulation2Impl that is a member of CSimulation2).
As it does not really make sense to request data only to pass it back to a function of the class it came from unchanged, this revision removes that need, changing the function to get the data it needs internally.
Looking into the commit history, the InitGame function first came into existence (in both c++ and js) in rP7281. When called by CGame, the argument that was passed was essentially empty, having been created the line immediately before the call.
Almost a year later in rP8865, a member object (m_RegisteredAttribs) was added to CGame that could then be used to store the attributes that would be passed to InitGame. (The call was also relocated from CGame's constructor to the current location inside CGame::ReallyStartGame())
A further nine months, and this attribute-holding object was relocated to CSimulation2Impl (and renamed to m_InitAttributes) in rP10426. Functions to get and set this object via CSimulation2 were added at the same time.
Subsequent changes (rP10787, rP15568, rP16214) have maintained the status quo across support for save games, stack rooting, and a SpiderMonkey update respectively.