Those types of card numbers are detectable though.
How? Based on issuer identification number?
As one example, Oracle Cloud's Free Tier sign-up prevents any type of virtual card.
I'm pretty sure it can be done via the IIN. Services like https://binlist.net/ provide a convenient solution to identify if it's a prepaid card.
They are detectable only if the issuer has a dedicated BIN for virtual cards. If they issue in the same BIN as your regular card, there's no way to detect without issuer cooperation, which would defeat the point.