The other version, called "the narrow version", only applies to some functions: End-to-End functions, which can only be correctly implemented at the endpoints of the system (mostly, that is within the application). The argument says that in this case, you need to implement it at the higher layer (e.g. within the application), and at the lower layer (e.g., on the physical link between two machines) only if it makes sense as a performance enhancement.