How and when the [SerializeField]s are loaded or deserialized? For example in CreatePrimitiveTools.cs, how m_MenuPrefab is initialized with correct CreatePrimitiveMenu?
You assign these fields to the script itself in the inspector. Select CreatePrimitiveTool.cs and you'll see that you can set defaults for fields.