Why do reduction's init predicate and its main body have different boundary checking behavior

When doing reduction the predicate guarding the initialization skips the boundary checking of the original itervars, by setting skip_ivar_domain argument in MakeBoundCheck to true (assuming stage->rolling_buffer==false), but main body checks it. I wonder why they are different?