Personally, I do "revert-all" all the time (to test / roll out changes on Test and Production).
Because no feature update should be overlooked before / during release.
Personally, I would find "update-all" way too risky. Because Dev potentially contains many small tests, changes, trials, and failed attempts. Those should never slip into a (bloated) commit. Let alone reach a "revert-all" on Production.
An "update-all" would also conflict with my understanding of "atomic commits". Where commits are always (many) small changes, exclusively.
Those are easily read. Easily understood. Easily undone. (And all features contain only small components (are not bloated).)
Changing a content-type? Do "drush fu this-content-type-feature". Commit.
Updating a view? If happy, then do "drush fu that-view-feature". Commit. Next.
Makes for very readable "git diff"s, without including any accidental or experimental changes from a Dev.