Not everyone uses PAM - OpenBSD uses "BSD auth" (derived from BSDI IIRC), which is IMO a much
cleaner and safer design than PAM. Most of the differences lie in missing library routines or
systems calls, or ones with different semantics. [uw]tmp/lastlog handling (actually login
handling in general) is another area of wild divergence.
Yes, we use some tools to merge changes from the OpenBSD tree to the portable tree - it isn't
much of an overhead at all.