Hi, thanks for calling me in.
The primary motivation seems to be unifying the ABI of the regular and free-threaded variants of future CPython releases, with the module initialisation getting in the way.
Quick question, was it considered to decouple PyModuleDef_HEAD_INIT from the Python object header? (I didn’t find a mention of it in this discussion page.) I don’t see a reason why it needs to be the same as a future unified object header. It could keep the current stable ABI layout even in a freethreaded build, thus avoiding the need for a completely new module init API.