I disagree with your article that scaling is better with single-purpose. A significant flaw in your article is not mentioning anything about cold start / warm start.
A cold function will be executed longer, thus incurring more cost, both in money and latency (less performance). A warm function is more cost-efficient. Depending on your function, this can be very significant, i.e. a function that takes 10 seconds to initialize but the real deal is only 100 ms.
When you split a component into multiple functions, there are greater chance of cold invocations than monolithic functions. Meaning more cost.
Maybe you say, well we can warm commonly used functions, e.g. every 4 minutes as used by Zappa by default. Yes that reduces latency, but at the same time it means more cost to execute functions periodically that essentially provides no value except to keep warm.