The ListLink is best understood as a Cartesian product, see https://github.com/opencog/atomspace/issues/1490#issuecomment-352961503 for the related discussion.
The reason for viewing the ListLink as a Cartesian product is because all of the uses of ListLink involve passing an ordered sequence of arguments (values or variables) to some function or predicate. Ordered sequences can be naturally understood as Cartesian products, and this conception is extremely general, cutting across all branches of mathematics.
Very few other ordered links are explicitly Cartesian products; some are explicitly not; for example, some of the natural-language link types are explicitly tensor products, and thus cannot be Cartesian. This is stated only as a warning: do not over-apply the concept of "product"; keep it limited to the ListLink.