What is the purpose of app.py in django apps?
As all the links you have provided clearly show, this is nothing at all to do with Django itself, but a convention applied by the third-party app django-oscar.
In Django 1.4 and above :

There is a new file called app.py in every django application. It defines the scope of the app and some initials required when loaded.

Why don't they use __init__.py for the purpose? Any advantage over __init__.py approach? Can you link to some official documentation for the same?