You are right, 400 columns can make things slower, though if each view only has a few columns, it may be OK.
Perhaps better advice is to normalize data, i.e. if most columns have the same kind of data (e.g. you have column for each store with the count of inventory items in that store), then the advice from this post can help: How do I duplicate a page without it being tied to the original page? - #2 by dmitry-grist. The idea is to have one table for Stores, and a separate one for Inventory, with each inventory row having a Reference to a Store, a Reference to an Item, and a count.
Grist provides ways to link widgets, so that you can set up views e.g. where you select a store and see all the inventory there (this sounds close to what you are aiming for), or select an item and see its counts across stores.