That’s what I like about this game too. It quickly turns into a concurrency / lock contention optimization problem if you build a very connected network.
The lookup happens on each invocation. It’s alway indirect, and the implementation of a method can be changed at runtime. Method calls aren’t optimized to be direct invocations.
If you're writing a desktop app, you may need to debug frameworks and libraries you don't have the source for. If you author a framework or library, you may need to debug a client application you don't have source for. In both cases, you'll likely need to debug assembly code.
There are diminishing returns to going deeper and deeper. But there's a big return for the first level.
I think it's useful to have a basic understanding of assembly so that you can debug better, or understand why some behaviors are undefined. I think that only takes a basic understanding of assembly though.
If you want to be an expert at assembly, you probably want to go deeper, but most people don't have that goal.