Внутренняя структура управляемой структуры недокументирована и не обнаруживается. Детали реализации, такие как заказ участника и упаковка, намеренно скрыты. С атрибутом [StructLayout] вы заставляете маршаллера P / Invoke навязывать определенную компоновку и упаковку.
То, что значение по умолчанию соответствует тому, что вам нужно, чтобы ваш код заработал, является просто случайностью. Хотя не редкость. Обратите внимание на свойство Type.StructLayoutAttribute.