Из-за выравнивания (alignment): процессор обращается к данным по границам (например, int64 по 8 байт). Между полями компилятор добавляет padding. Порядок полей влияет на количество padding-байт и на итоговый размер структуры.
type Bad struct {
a bool // 1
// 7 bytes padding
b int64 // 8
c bool // 1
// 7 bytes padding
} // 24 байта
type Good struct {
b int64 // 8
a bool // 1
c bool // 1
// 6 bytes padding
} // 16 байт
Линтер fieldalignment находит неоптимальный порядок: go install golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignment@latest и fieldalignment ./....