You can join all rows of both tables and then consolidate to a third table using the wildmatch() function and grouping the fields.
Once you load the 2 data sets, add the following load script:
Join (DataSet1) Load Country as Country2, Region Resident DataSet2;
DataSet3: Load SalesOrderID, ProductName, [Order Reference], Concat(DISTINCT Region,',') as Region Resident DataSet1 where WildMatch([Country],'*'&Country2&'*') > 0 Group by SalesOrderID, ProductName, [Order Reference];
If your country-field from dataset 1 contained a valid delimiter between the multiple entries you could split them into multiple records, for example with:
... subfield(Country, Delimiter) as Country ...
and on it you could simply join/map the dataset 2 against it.
If there is not such delimiter like it looked in your example because the country-items itself contain spaces and the delimiter seems to be a space it's not working.
In this case you could load the dataset 2 at first within a mapping-table and using mapsubstring() to replace the entries with the regions and/or you replaced them with their own value - but adding a valid delimiter to them. And then you could apply subfield() again like described above.