I go back and forth about whether I like False/True = 0/1. It allows powerful manipulations like this, but it's a sort of unadvertised shift in domain. Sometimes I think we should more fully embrace it, as APL does, with no distinguishing notation for Boolean values, just using 0 and 1. And sometimes I think we should report an error when asked to do arithmetic on Booleans. But this middle ground makes me uncomfortable.
I agree about feeling uncomfortable with silently type-casting Booleans to integers. I even wanted to disable that altogether only to find out that all too many projects already depend on it. I do have a bunch of prototypes for variadic inputs to reporter-IF, so stay tuned for more news about this as we keep thinking about solutions.