Embargo
Stop products shipping to US states and ZIP codes they cannot go to - your rules, enforced at checkout with a clear reason.
For US shops selling knives, vape goods, plants and seeds, CBD, alcohol, fireworks - anything with a state line it cannot cross.
Embargo enforces your rules; it does not know the law. Check each state's rules for what you sell.

Inside Embargo
Your rules : "never ship to these places" or "ship only to these places".
Which products : by product id, category or tag (a variation follows its parent, or can be named itself).
Which places : two-letter states, and ZIP codes exact (84101), by prefix (841*) or by range (84001-84099) - for a county or a city.
The reason you write is what the customer reads at checkout, with the product named, so they know to remove it or ship elsewhere.
Local pickup can be allowed per rule - it is not shipping.
On the product page : "Cannot be shipped to: ..." under the price.
For you : every product and where it cannot go, a warning when a product's rules leave it nowhere to go, and a log of stopped checkouts.
Before you start
More for shipping & orders

Franking
WooCommerce Canada Post, Australia Post and Royal Mail rates in one plugin

Mailslot
Catch bad US shipping addresses before the parcel goes out: local checks always, USPS checks with your own free USPS credentials.

Manifold
WooCommerce: ship one order to many recipients, with gift notes and slips