Has to do with order of precedence for the appearances.
1) Explicitly assigned appearances at the current level will override appearances below.
2) When an appearance is assigned to an assembly it is only applied to subassemblies, parts, and surfaces who's appearance is unassigned, and would would otherwise use the default appearance.
Below, the order of precedence goes in order from 1-5 for assemblies, and 1-2 for parts. Creo will use, if found, the appearance found at level 1. If no appearance at 1, will check if found at 2, if not then 3 if not then 4 if still no appearance found, then creo uses the default appearance.
ASSEMBLIES: order of precedence is:
1) Explicitly assigned appearance applied to a surface chosen at the assembly level
2) Explicitly assigned appearance applied to a component or subassembly
3) If no explicit appearance is assigned at the assembly level, then the effective appearance of the part or subassembly will be used if it is set.
4) If no appearance is found after searching down through to the subassemblies and parts, then then the assembly appearance will be applied.
5) Lastly if all of the above finds no appearance to apply, then the default appearance is applied.
PARTS: order of precedence is:
1) Explicitly assigned appearance applied to a surface chosen at the part level.
2) Explicitly assigned appearance applied to the part
if no explicit appearance is found, then the default appearance is used.
==============
In your example, the subassembly 6622665A.ASM must either have an appearance assinged, or the parts do. IF you opened up the assembly 6622665A.ASM and CLEARED ALL appearances first, then if you set a color for the assembly PAINT_SMC_AZZURRO the assembly appearance will override the default color for all the components and subassemblies since they will not have an appearance assigned.
If your intention is to create an assembly so you can set the appearance of a subassembly, you simply have to assing the color to the component, not to the upper level assembly. Your first way is the appropriate way, I think, for what you are wanting to do. Assigning apperances to assembly just changes what the default appearance will be for anything contained within that assembly.