There is another option, at least for MVP: use the global inventory tracking setting already exposed in Spree. This can be read/written through Spree::Config.track_inventory_levels.
I'm currently looking through the places that actually use this value (there appear to be about a half dozen) to see if we can inject a check against the product-level setting as well and piggy back on the remaining logic.