What's the problem with calling it for every character? What behavior would it result in?

addr.IsValid() knows when the whole address is entered. An incomplete subset of a bitcoin address is never a valid address.