Motion that carries information
Direction. A panel that slides in from the right has told you where it came from and where it will go when you dismiss it. The visitor now has a mental model of the interface, built without a word of explanation.
Cause and effect. A click that produces a visible consequence within about a tenth of a second reads as responsive. The same click with no acknowledgement reads as broken, and the visitor clicks again.
Hierarchy. When several things appear, the order they arrive in says which matters. Everything arriving at once says nothing at all.
State. Loading, empty, error and success are the moments a visitor is most likely to leave, and they are usually the least designed. Motion here is not decoration, it is the difference between “working” and “stuck”.

Motion that just costs time
The entrance animation on every section. The first one is a flourish. By the fourth, the visitor is waiting for content that has already loaded, and you have added latency that does not exist.
Scroll-jacking. Taking over the scroll wheel is taking the one control the visitor is certain about. It can be worth it (the Broz homepage spends its whole hero on one enormous sentence with project thumbnails drifting behind the letterforms) but it has to buy something. Usually it does not.
Anything over about half a second that the visitor did not ask for. Delight has a short half-life and a long tail of annoyance on the second visit.
The reduced-motion question
A meaningful share of people have reduced motion switched on at the operating-system level. For some it is a preference; for others, large motion causes genuine nausea.
The lazy answer is to disable everything and ship a site that feels broken. The right answer is to decide, per animation, what it was communicating and how to say that without movement, usually a state change instead of a transition.
It is a design decision, which means it belongs in the design file rather than being discovered as a checkbox at the end of the build.