Jagged array is basically an array of arrays. This means that there are several arrays living in memory. Each as it's own lifetime.
Because Unity script (through .Net) is a managed runtime, object destruction happens out of user control. So part of a jagged array can be release while another part stay alive longer. For this reason it is bad on performance (and also it introduces a level of indirection when accessing values).
On the other hand if you have to store arrays of different size then there is no other solution. Using a rectangular array will use to much memory (you will have to allocate arrays with the biggest length of all your desired arrays, resulting in waste of place).
Jagged arrays are not really bad on performance if they are kept small (that is to say if don't have a lot of arrays in the first dimension).