If you're using ARC, there's not that much of a difference between alloc init and using a class method. If you're not using ARC, the difference is extremely important.
The alloc/init combination gives you an owning reference. That means you must release it later on. The classnameWithFoo variant returns a non-owning reference (auto released). You may not release it.
This follows the usual Cocoa naming conventions. All methods return non-owning (autoreleased) instances, except for the methods that start with alloc, copy, mutableCopy and new. These return owning references that you must release.
The naming convention you suggest for the ARC environment is good, and the code will not leak.
The object will only be around until the run loop ends though.
Where as if you return an alloc/inited object, ARC will insert the appropriate release calls and the object will exist for it's scope.