Every library ships a different one. NLTK's English list has 179 entries; scikit-learn's has 318; Lucene's is 33. Analyses run with different lists are not comparable, and nothing warns you about it.
Domain words break generic lists
In an SEO corpus, search, page and site appear in nearly every document and carry almost no distinguishing information β they are functionally stop words for that corpus and appear on no standard list. Meanwhile a generic list may remove terms you need: not is a stop word almost everywhere, and removing it inverts the meaning of any sentiment work.
Deriving the list from the data
A more defensible approach is to compute document frequency across your own corpus and treat the terms appearing in most documents as stop words. That is essentially what the IDF half of TF-IDF does automatically, which is a good argument for using TF-IDF and skipping explicit stop word removal altogether.
Order relative to other steps
Remove stop words after tokenising and case-folding, and before stemming. Stemming first mangles the function words into forms that no longer match the list, so the removal silently misses them.
Try it: Remove Stop Words on SeoWolf's Notepad.