Hi Dan,
This is by design. When a product variant is deleted, the variant_id on line_items that have this product variant is nullified. The reason is that we can't keep direct references around to objects that no longer exist.
We retain the variant_title (and some other information) on that line_item to show to merchants. That way when they look at old orders with deleted or changed variants, they still have all the information at the time of the purchase.
Also, variant ID is not required. For example when a shop does a direct sale via POS, there is not a product or variant involved, and the field will be null.