The only drawback here is that someone has to play through the game once to 'build' a cache that can be used by others.
Another approach is to cache the system's raw shader pipeline and then compile the shaders before the game even starts. A mitigation to this stuttering is to compile the shaders asynchronously to the emulator, but this has its own drawback in that in the time it takes to compile the shader, the effect in-game that relies on it won't be shown. The simplest way to do this is to recompile them at runtime, but that's slow and can cause stuttering every time a new shader is loaded in the game.
Modern consoles and their games make heavy use of precompiled shaders specific to their GPUs, and these shaders can't be run natively on PC hardware, so they need to be translated or recompiled.