Isn't the former promoted as better programming? IoC, decoupling, Law of Demeter, testability etc
You can imagine a million ways those assumptions break down, as well as a million ways they seem to but should actually be stuck to. Knowing the difference is the tough part.
It took 4 times as long to produce the solution that was 4 times bigger and more complex than it needed to be. Maintaining that huge body of code forever is more than 4x the effort over time than a single small function. And that's how you get a 0.25x (or less) programmer.
The sweet spot has a nice tradeoff between extra-time spent, and ease of migrating to a full-blown complicated and extensible solution. For me, I generally write my code in that middle ground. Stubbing out parts of my solution and then coming back to fill it in. In that sense, having separate functions with clearly-defined input/outputs or portions of work, aides me in completing my solution.
Best practice doesn't mean "make as many classes as possible" although I would probably break up two-pages into a few different functions (large functions, even when they are good code, invite programmers who come later to add to them in a messy way).
And yes changing things in six places means you did something wrong, but that's easy to do when you start by splitting things into six places. The worst, of course, is when developers don't change it when it needs to be changed and instead just keep adding. Once you have something so designed it makes removing and changing code more painful than adding code.
Personally I think the narrative works better when you think there are 1x programmers and 0.1x programmers. And a very large number of developers are actually between 1.0 and 0.1. These 0.1x programmers somehow manage to solve problems by simply puttering away at it over time. For example, these programmers might start out reading a web service into an XML file, re-opening that XML file to process the result, copying that file someone else that is never read again, taking the result and inserting it into a database table, reading the table to create an aggregate result, and then finally inserting that result into another system. And they do this all day long every day for every problem they come across.
Not everyone is quite that bad, there are 0.5x programmers who know better than that but still manage to write 6 classes to solve a problem that could be done in a single 2-screen long function.
Tools and processes can help and code reviews are pretty invaluable. Any good process will have weeded out 0.1x programmers already and they will settle in those places without them.