Is there any functional reason why product_id is not a required field @ Account Invoice Line?
In case of Sales order and delivery order, product_id is needed to produce procurement and other workflow dependent processes.
Refer field definition @ github (https://github.com/odoo/odoo/blob/8.0/addons/account/account_invoice.py#L1263)