It's mostly due to optimizing on the emulated gpu. Currently the gpu is decently accurate but there's still a lot of work needed to improve accuricy and a lot more coverage. Things like Geometry Shaders, shadow mapping, cube mapping, procedural textures are missing.
Pokemon S/M as well as OR/AS have 3 main bottlenecks.
1st Texture caching is not being effective on them. @yuriks could explain it better though, he's the expert.
2nd Vertex Shader JIT is not producing optimal code.
3rd the geometry pipeline could be optimized further without breaking accuricy.
When can you expect to play pokemon S/M at full speed? Maybe in a year or 2, the focus right now is on coverage and accuricy. Optimizations are secondary but it's identified and will be worked on when the gpu emulation is more accurate.