Every time someone says the 7 layer OSI model is actually good for teaching they go on to describe teaching the TCP model instead where you have:
1) Link (physical)
2) Internet (IPv4 or IPv6 these days)
3) Transport (UDP or TCP or whatever)
4) Application (stuff handled by the application logic)
Which is precisely what people mean when they say the OSI model is bad to teach. It's not that using a layered abstract model is bad for teaching it's that the 7 layer OSI model is bad for teaching.
I think it's a bad idea to teach people "layer 2" is the Internet, (tcp/ip, ipv4, ipv6, udp, icmp, etc).
People doing stuff with networks need to be aware that the physical (layer 1) is its own distinct thing from layer 2: the link layer network (such as Ethernet fabrics, ethernet as wifi, SDH/SONET transport systems, whatever sort of network accomplishes the purpose of putting multiple devices on a fabric where they can talk to each others' NICs).
Nothing says you have to run IP over an ethernet switch and a group of things that can arp each other - you could very well run something as weird as novell netware or your own custom software stack. The link layer is exactly that, a link layer, it's most often used with IP but not as an absolute. Understanding that the link layer exists underneath and does things independently of the IP network is important.
In an opposite example, you can build an IP network out of two devices that are adjacent to each other over a SDH/SONET network, and there's no Ethernet anywhere. Something as simple as two routers with OC192 interfaces sitting next to each other on a test bench with a fiber patch cable between them, as a BGP adjacency.
1) Link (physical)
2) Internet (IPv4 or IPv6 these days)
3) Transport (UDP or TCP or whatever)
4) Application (stuff handled by the application logic)
Which is precisely what people mean when they say the OSI model is bad to teach. It's not that using a layered abstract model is bad for teaching it's that the 7 layer OSI model is bad for teaching.