I think the reasoning is that interfaces are implemented by a dynamic lookup. Part of Go's philosophy is that things that could be expensive (function calls) should be visually distinct from cheap things.
Struct field access is cheap, hopping through a dynamic dispatch table is less cheap.
I can't remember the specifics for why fields cannot be used within a Go interface but I do remember missing it a few times while writing Go code.