MySQL - Creating an index in table DDL statement or separately
In InnoDB, the PRIMARY KEY is, by definition, clusered and BTree-organized.  If you populate a table before specifying the desired PK, a hidden PK is generated.  This hidden PK must be removed and replaced by the desired PK and the table must be re-sorted according to the new PK.  No "harm" is done, but extra time is taken and the BTree may become more fragmented.

Adding secondary keys (any key other than the PK) separately from the CREATE TABLE may or may not be inefficient.  But, again, no "harm" is done.  The inefficiency depends on the version, the nature of the index, etc.

FOREIGN KEYs are another matter -- they must be applied in the "right order".  This can be achieved by having the CREATE TABLEs in the "right order" or by separately adding the FKs in the "right order".

OK, the documentation in this area is wimpy.  You could report it at bugs.mysql.com .

I prefer to have (and see) everything inside the CREATE TABLE DDL.