I think they mean that if /tmp/a is a symlink to /some/dir and /tmp/b is a nullfs mount of /some/dir,
- after
chdir("/tmp/a"), getcwd() returns /some/dir.
- after
chdir("/tmp/b"), getcwd() returns /tmp/b.
It's not that much that the former is incorrect. It's just that symlinks and nullfs mounts have two different semantics.
A symlink is a pointer to another file which most system calls (including chdir()) follow, while a nullfs mount makes a whole directory tree available under a different path (and contrary to Linux' similar bind-mounting feature or directory hard links in some other systems, the files there appear as being different files).
The symlink handling can break some people expectations (like that getcwd() here), but nullfs mounts (or the bindfs fuse filesystem on Linux or some union filesystems) can break other people expectations like the fact [ /tmp/b/x -ef /some/dir/x ] would return false even though they are the same file underneath, or that fuser /tmp/b/x could return nothing even when there are processes that have it opened via the /some/dir/x path.
The Linux bind-mounts (which do not make the files appear as being different) could break some other people expectations, like find -xdev/du -x traversing the mount point, two links to the same file with a link-count of 1 (it also allows loops to be created in the filesystem; FreeBSD's nullfs guards against that).
Hard links (the oldest of those technologies that make files appear under different paths) as well can break some users expectations (like that when you unlink a file from a directory, you expect it to no longer be available).
So I wouldn't say that one is more correct than the other here.