I have realised the answer. The program being invoked (by a full pathname) could invoke another without the full path, and thus use $PATH.