To explain why they are different: Fields affect the size and representation of the struct, whereas functions do not (the functions take space elsewhere, and are merely namespaced in a struct).
As for the ability to declare fields as private, you can see an old closed proposal with discussion here: https://github.com/ziglang/zig/issues/9909