No, the primary reason is that IDs prevent reuse.
If you want to build a library of reusable components, IDs are obviously not what you want.
As the person who writes these components, you do not care how often one of these components is used. From your point of view, it only matters if it's used at least once. If it isn't, you can throw it away.
Secondly, if you use IDs which were added for JavaScript or fragment links, you'll introduce some coupling which really shouldn't be there.
Same thing with JavaScript. If you need a class, you should add a prefixed one (e.g. "js-foo"). Obviously, classes like that should never appear in your stylesheet.
Nothing of this has anything to do with cargo cults. There is an actual reason behind every rule.