I'm treating the GPU as a big train which must not be stopped for a small amount of passengers. Option 1 helps to reduce the amount of shader variants, which helps for batching ( And can always be divided into sub-shaders later on ).
Level of detail will to reduce the shading Load.
However, all the shaders used on games ( that I've seen ) used the pre-processor option to reduce the work... so I'm still confused about
that matter. I remember OpenGL GDC lecture about zero driver over head, swapping shader was very expensive.
so I'm still trying to figure why the majority picks option 2.