in reality, the serial number is unique to every box that we have built, therefore, the boxes table currently contains about 900 entries. Is it unreasonable use a value list that large?
Value Lists, even if using pop-up menus and drop-down lists, work best for sets under 50. Since this is a LineItems portal on an Invoice, I would probably include another field such as Model which can filter the list for you. If you first select the Model, you can use conditional value list to then display only boxes for the model specified.
Another option is to provide a portal in a popover or window. You can filter the portal in similar fashion.