And compilers will often create jump tables from large switch statements anyway.
(Actually, it doesn't even need to be a switch statement... Just a succession of `if`s works fine.)
I've also found this comment in Python 3.6 source code in ceval.c which is where opcode dispatch is: https://pastebin.com/kuV7UfG0
I wouldn't say it is always a waste of time just because jump tables can be easier to read and manage when you have a decent number of opcodes. Being able to have all your opcodes in separate functions and then just have one single list that shows exactly what opcode maps to what instruction is really nice:
https://github.com/mkilgore/yaji/blob/master/src/op.c#L336
To each his own though, you're right it likely doesn't matter that much performance wise.