I have read this recommendation as well, but for me maintainability/readability of the processes is very important. I have exactly 10 processes for Account, some of them for creation events, some of them for update events.
Some processes copy fields, other create objects, several invoke a mail alert. All of these have different conditions of course. Some even spawn actions in the future. To put these in just two processes (one for creation, one for update) would result in very large processes, if it can be done at all.
To say more about the maintainability aspect: suppose you have just one process per object and suppose you are working on new functionality, in a sandbox. Let's say a quick fix must be done on production. This fix has nothing to do with the new functionality, but it applies to the same object. Than you are obliged to apply it to your sandbox as well, because it is all one big process. And it's not an elegant update of the process: a changeset simply adds a new version, it will not merge anything.
Also, if you want to temporarily disable one bit of functionality: when you have separate processes, you just deactivate the appropriate one. If you have one big process, well, you have to edit some condition, somewhere, I guess, and remember where you have done what. Good luck with that.
Putting all functionality for an object in one big process goes against all lessons that we have learned about maintainability.
So for the moment I am keeping them in separate processes. As for the recommendation to migrate to Apex classes: that is just ridiculous. You should only consider Apex programming if you can't fulfill requirements via processes/flows/workflows. Apex code is much more error prone and makes your org much more inflexible.