What you refer to as a 'nameless category' is called a 'class extension'.
One difference is that the compiler expects that declarations in the class extension are defined in the class' @implementation
block. That is, you do not declare the extension's @implementation
block explicitly when it is in the same translation as the primary @implementation
block. They are merged for your convenience. Consequently, the compiler may produce warnings.
Another difference is that an extension may declare properties which are synthesized (and consequently resize the type), where a regular category cannot. In addition to properties, instance variables may be declared in the class extension's @interface
.
Beyond that, it's just convention.