I was having a similar issue where IAP's were working perfectly in TestFlight and Sandbox environments, however, products didn't load when in review. Below is what worked for me:
Log on to App Store Connect. In your app, navigate to the IAP section --> Manage
Select your IAP --> Hover the mouse over all the fields and check if any warnings pop-up. Specifically, check Subscription Display Name, Description, App Store Promotion Image. Status should not be in "Requires developer action".
If you see a warning message on any particular field, make appropriate changes as mentioned. In case of no warnings, amend (minor change) any one field and save.
Do this for all IAP's if you have more than one.
Navigate to the IAP section --> App Store Promotions
Check the status of Promotional Metadata, and IAP.
Navigate to the IAP section --> Subscription Groups --> Select your subscription group
Check for warnings in Subscription Group Display Name, and App Name Display Name.
If you see a warning message on any particular field, make appropriate changes as mentioned. In case of no warnings, amend (make a minor change) any one field and save.
Check this for all the subscription groups, if you have more than one.
My issue got resolved after amending the Subscription Group Display Name. For some reason, it was showing a red mark next to localization. It was "Premium Access - App Name.", amended to "Premium Access - App Name". Just removed the period, and saved it. Voila : )