As far as I know, Virtual products are designed to be containers for their variants and do not represent a physical product. This, in turn, means that we shouldn’t be able to have any Asset records referencing a virtual product.
In create#OrderItem, there is a check that prevents adding virtual products as order items.
I believe there should be a similar check in the following services (AssetServices.xml) to prevent manually receiving or recording physical inventory for a virtual product.
What do you think?