I would say this is pretty risky. One barometer I have for penalty risk is "if a human quality reviewer looked at this, would they see something amiss?" and in this case, someone who knew what they were looking for would sniff this out as shady right away. I also think the combination of signals you're describing are easily machine-readable to an extent that a penalty trigger would definitely be possible.
I also don't understand the logic the vendor is using here. If Google can't crawl schema in an iframe, why include the schema at all? It's not like users are going to see it or get anything from it. There's no point in having schema if it's not machine-readable, so why do it at all?
James has a good point that reviews are actually more trustworthy when they include some negative ones. Users are smart enough, and used to reviews enough, at this point to be able to tell when they're only being shown the positive reviews - so including only 4- and 5-star reviews is probably hurting their credibility with customers, as well as with Google.
I don't have any data on how Google specifically treats markup within an iframe. I have heard that you are only at risk for a penalty if you're receiving the reviews rich snippet, so that's one thing I would look for - but again, if they're not trying to get reviews snippets, why do any of this in the first place? If they're a small enough business with low enough traffic, this is the kind of thing that could fly under Google's radar for a long time, but as you've already experienced, recovering from a penalty is a lot harder than never engaging in shady practices in the first place.
