It isn't looking at or counting arm swings. The body makes a series of fairly predictable individual movements when taking a step, and put in simple terms, the software in the watch is looking for that series of movements being reported by the accelerometers in order to count a step.
The problem with holding a leash, pushing a cart or carrying a weight is that it damps out those movements at the wrist, making it harder for the watch to detect them, and thus count a step. It's why activity tracking from the wrist is notoriously difficult - though in my experience so far, the Apple watch is more accurate than other wrist-based devices I've tried.
You repeated what I said but with more words. If my arm does not move it does not know I'm moving.