Every Shopify store with filters generates a lot of URLs. Color, size, price band, availability, in every combination. The usual instinct is to reach for noindex. Google's own guidance points somewhere else, and the distinction is worth getting right because the two levers solve different problems.
Indexing is not the problem. Crawling is.
Google's documentation on managing crawling of faceted navigation URLs frames this as a crawl issue. Its primary recommendation is blunt:
"Use robots.txt to disallow crawling of faceted navigation URLs. Oftentimes there's no good reason to allow crawling of filtered items, as it consumes server resources for no or negligible benefit."
Notice what that does and does not do. A robots.txt disallow stops the crawl. A noindex requires the crawl to happen first, because the tag lives in a page Google has to fetch to read. If your concern is thousands of near-identical filter URLs eating crawl attention, noindex is the more expensive answer to the same question.

What the documentation recommends alongside it
Canonical, to consolidate. Google notes that "using rel="canonical" to specify which URL is the canonical version of a faceted navigation URL may, over time, decrease the crawl volume of non-canonical versions of those URLs."
Nofollow, with a caveat that matters. "Using rel="nofollow" attributes on anchors pointing to filtered results pages may be beneficial, however keep in mind that every anchor pointing to a specific URL must have the rel="nofollow" attribute in order for it to be effective." One un-nofollowed link in a footer undoes the work.
404 on empty combinations. "Return an HTTP 404 status code when a filter combination doesn't return results. If there are no green fish in the site's inventory, users as well as crawlers should receive a 'not found' error with the proper HTTP status code (404)." A soft error page that returns 200 teaches crawlers that empty pages are real.
The document contains no guidance recommending noindex for faceted URLs at all. That absence is informative.
Where noindex does earn its place
There is a real case for it: pages you want humans to reach and search engines to ignore, and which must therefore stay crawlable. Paginated listings are the clearest example. A page 4 of your blog should be followable, so crawlers can reach the articles on it, while not competing in the index itself. That is why our own paginated and filtered blog listings are marked noindex, follow rather than blocked.
Blocking those in robots.txt would be a mistake, because it would also stop the crawler discovering the articles they link to.

The decision in one line
If the URL has nothing a searcher wants and nothing a crawler needs to pass through, stop the crawl. If it has links worth following but no value in the index, let it be crawled and keep it out of the index. Reaching for noindex by default conflates the two and pays crawl budget for the privilege.

