Typically speaking, online and in store counts update almost immediately anymore. The company has made great strides in improving that functionality. When the counts aren't accurate, the culprit can be lots of different things, for example, theft, a cashier not properly scanning an item, a mispick, the DC just not loading a box onto your truck at some point, not defecting properly, etc.
There are several reasons that an item can have a negative on hand count. If someone audits an item out incorrectly and you later sell out, the count will go negative. (One reason to always use extreme caution when auditing.) Sometimes what you are seeing is the result of a mispick. The item is what was sent instead of what was supposed to be sent and each time it sells, you get a negative count for it.
I'm not certain how things work for Shipt, but imagine it's very similar to in-store pickup. When a guest orders something for pickup, the amount they ordered is immediately deducted from the store on hands. So, if we have 1 copy left of Animal Crossing, when it gets ordered the count will drop to zero. Now, let's say that before the item is picked for the order a guest in the store buys it. In that case, the on hands will drop to negative one because we had one, it was ordered (so that's a minus 1), and it was sold (so that's another minus 1). That equals out to -1. When the fulfillment TM INFs the item, plus 1 will be added back into inventory and only then will the on hands go back to 0.
There are also some items throughout the store that by design work only as negative on hands. These are vendor items that people can't order online. All of MJ Holdings garbage works this way. The on hands all default to zero no matter how many we have in store. Each time something sells, it deducts one from the counts. So the counts are negative, but the vendor then easily knows how much of their shit has sold.