So both versions are kind of related, but differ in scope (all functions vs. only end-to-end functions), placing (end hosts/in the core vs. higher/lower layers, not talking about what device), and goal (flexibility vs correctness of the system).
The authors of the papers on which this is based never explicitly acknowledge that there are two versions.
Barbara van Schewick says in her book that there being two versions often leads to confusion in, e.g., policy debates.
End-to-End argument explanation Afficher plus
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.