How to prepare an array of values with $wpdb

Not quite there. In your first example you have sku LIKE %s and in your example you have product_sku LIKE '%{$matchedProduct->sku}%'. That’s not the same.

$wpdb->prepare() uses sprintf replacements. That’s where you get the %s in your first query. If you look at the sprintf documentation under specifiers, you’ll find a list of replacement patterns. $wpdb->prepare() uses the same specifiers, for example %s for a string, %d for an integer, etc.

In your case, you probably want to use product_sku LIKE %%%s%%.

Why did you add extra % signs?

With printf() and sprintf() functions, escape character is not backslash \ but rather %.

That means %% is output as % and %s is output as 42ts (for example). Altogether the output looks like product_sku LIKE %42ts%.