Yeah, but it's not a terribly good one. The short answer is that .read and .write are different from append. Read and write (what NIO calls modes) form (along with read-write mode) a set of options that you must pass exactly one of to the open syscall. That is, open requires exactly one of O_RDONLY, O_WRONLY, and O_RDWR.
Notice that none of those are O_APPEND. This is because O_APPEND is a modifying flag: it modifies the behaviour of writes. But it doesn't replace write mode: you have to set O_APPENDand a write mode.
I don't think Swift system's approach is meaningfully different to ours: FileDescriptor.AccessMode is essentially identical to NIO's NIOFileHandle.Mode, and does not include .append. The difference is only that there's a nice .append spelling, instead of forcing you to write O_APPEND. We could certainly add a .append helper to NIOFileHandle.Flags to improve the spelling.
As to reconciling the two, in the fullness of time much of what we have here should be completely unnecessary and subsumed by other frameworks. In the short term, I'd love to reconcile with Swift System but for backward compatibility reasons we'll need to carry the current implementation for the foreseeable future.