This doesn't seem to be about default implementations on protocols, I guess they do actually do virtual dispatch so you wouldn't hit this bug with default impls. The main issue is that we have an extension method on a type with the same name of a member of that type. So it can always be statically flagged whether or not the method is used anywhere else. This is easily reproducible in any language that supports extension methods (C#, for instance). I wonder if that could be useful at all.
VB for me was the gateway to the modern .NET programming. Back in school, I've started with VB6 and moved to VB afterwards. The transition was somehow seamless and made me understand the .NET ecosystem better. When I was learning C# I had to first write my code in VB and then try to port it to C#. That was just my way of learning things. It happen to be useful since now I'm fluent in both when I need them.