It is possible to create multiple groks for multiple paths?

Yes, of course. Multiple grok is possible (discuss).

In your case, as the columns are the same for the 9 first ones, you can make one simple grok and adding a conditional statement :

^(?[^;]);(?[^;]);(?[^;]);(?[^;]);(?[^;]);(?[^;]);(?[^;]);(?[^;]);(?[^;])(;(?[^;]);(?[^;]*))?

Adding ()? allows you to say that the part between () isn't always available.