IMHO what makes app factories hard to grok is the poor documentation and examples/tutorials on the topic. The official docs mention app factories are great but then don't include any clear example on how they could be used with routes. They do include examples that don't use app factories, thus that's what newbies use to get up and running, and afterwards keep on using because it works.
initially, it's only a bit more effort, but as you scale it'll stop e.g. your views.py getting out of control, without resorting to hackery.
again, it can be hard to do retro-actively, and once you realize you need it, the codebase is usually pretty bad. so i just do it from the start, as the extra effort is small then.
(best practices prevent team members with less experience from committing attrocities and give them a good foundation to copy from)
[0] http://flask.pocoo.org/docs/1.0/patterns/appfactories/