Ed, I think the efficiency question that John mentioned was about the needing to use the GetNextModified() in a loop or SCAN to find the next record to commit the changes for.
For me I still use both. At first I only used ROW BUFFERING until I accidently left a list tab available to a user and they moved the record on me and updated with no forced Save. I also hated the problem of doing record validation using SEEK() but now we have INDEXSEEK() which WON'T move the record pointer. But for the earlier answers I have been using TABLE BUFFERING more and more lately because I find it easier and less prone to accidently updating records. I am usually working with lots of online users and am having to manually LOCK records a lot to keep my contentions from happening. I know I do to much manual stuff in the background but again nothing "magical" is happening to my data then too! IMHO!