Cross parts simply link parts together, without any other restrictions other than that this part is a reference to that part. Examples include customer part numbers, vendor part numbers, part synonyms, etc.
Part Spec groups let you group parts together arbitrarily and restrict them. Meaning… you can say, e.g. with a part spec group A, that this unique grouping of parts are interchangeable with each other, whereas with this part spec group B, which is a slightly different grouping of parts are interchangeable with each other. What this gives you the power to do is, you could then say, for a single component RAWABC, you can maintain different part spec groupings of approved alternates for component RAWABC. Let’s say on this customer job/BOM, you actually can add Part Spec Group A to the BOM itself (instead of a component part number like you normally would. Then on this other entirely different customer job/BOM that uses the same component, you can add Part Spec Group B to the BOM itself (instead of a component part number like you normally would).
In summary: Cross Parts let you make parts synonyms (alternates) of each other.
Part Spec Groups let you create groups of part synonyms and apply those groups as Approve Alternates per BOM.