That's precisely the point: @INC is the list of paths that perl will search when it goes to load your module. If you put a code ref into @INC, perl will recognize it and execute it (rather than treating it as a path to search). By pushing your sub onto the front of @INC, you'll ensure that perl checks it first. By returning undef, you'll cause perl to keep looking until it finds the real path.
The very end of the doc that tye linked, require, describes this in detail. The same @INC method works for use.