and has to check them all and returns the last if all are non-nil. The OR operator would stop at the first non-nil (cuz then it's done) and return that.
I should add that you asked why it did not work as you expected, without explaining why you expected what you did so I am flailing here, but hey, it was it is. They could have returned the first of them or all of them or a boring t -- I think it was just a bit of hacker cleverness and a good guess (IMO) of what to use as a true return value.