The gain is, it forces the programmer to provide the class with a base of initialization parameters before the class instance can even exist.
The same can be said for factory style creation. When you invoke a static create method, you are supplying parameters before the concrete object exsists.What BlitzMAX really needs is private/protected constructors, so that objects cannot be created outside the type in question.