Not really informed here but I would venture a guess that 'perfect separation of concerns' causes a performance hit. In the backend web dev world you can usually suck that up by making the load parallelizable across servers, something you don't have the option of doing with code running locally. In other words, 'separation of concerns' is great until you hit a performance bottleneck, as you often do with any resource constrained system.