Вопрос хороший. Когда-то я задавался таким же. И пришёл к выводу, что буду выделять в аппы только reusable apps, то есть, приложения не должны иметь связей за пределами себя (не считая юзера). Выделял такие приложения, как чат, генератор капчи и т.д., а всё остальное хранил в аппе с многозначительным названием core.
В один прекрасный день, в одном прекрасном проекте с этим самым аппом core оказалось примерно 30 моделей и почти сотня вьюх. Было принято решение раздробить модели и вьюхи на подмодули (вместо файла views.py была создана папка с файлом __init__.py и другими файлами по категориям этих самых вьюх, то же с моделями). Вот тут-то я прозрел и понял, зачем на самом деле нужны аппы.