I expect the assumption is that a derived class will have a constructor with an extended/alternative (and thus incompatible) set of arguments. This is often the case with constructors, but not so often with normal overloaded functions (since that would make overloading less useful).
When actually used as a constructor (which is the only way to use it if declared static), there is no problem, because you normally know exactly which class you are instantiating, so there is no question which implementation of "create" will be called. However, if called as "o->create(...)", then you might have gotten "o" as a type polymorphic parameter, and normal overloading abiguities apply.