Django is unusual.
You see, Django makes heavy use of a behind-the-scenes feature called the metaclass. In Python 2, a nested class is the cleanest and most straightforward way of providing the metaclass with information that isn't strictly part of the class itself, such as the model that your form is based on.
In Python 3, it is possible for a metaclass to accept additional keyword arguments, like this:
class Foo(Bar, baz=qux):
...
Those arguments are passed directly to the metaclass constructor, and are a much cleaner syntax than the nested class.
I do not know whether Django plans to adopt this syntax, but for backwards compatibility reasons, it is very unlikely the nested class syntax will ever go away entirely.