In the Development with the Force.com Platform book on pg 130, they mention that an Array’s length is fixed when you initialize it and that multidimensional arrays are not supported. I just tried using the .add function on an array and it worked so I’m sure what they are talking about, but I couldn’t make an array of arrays (which could have just been because I didn’t have the right syntax). Ignoring syntax errors, there seems to be some sort of difference and thus maybe an (even if just slight) advantage to using one over the other?
There really aren’t arrays in Apex, but you can use the array notation to declare lists. From the documentation on lists:
When using one-dimensional lists of primitives or sObjects, you can
also use more traditional array notation to declare and reference list
elements. For example, you can declare a one-dimensional list of
primitives or sObjects by following the data or sObject type name with
the  characters
To answer the question about fixed arrays (lists), it all depends on how you try to put elements in them:
Even though the size of the previous String array is defined as one
element (the number between the brackets in new String), lists are
elastic and can grow as needed provided that you use the List add
method to add new elements. For example, you can add two or more
elements to the colors list. But if you’re using square brackets to
add an element to a list, the list behaves like an array and isn’t
elastic, that is, you won’t be allowed to add more elements than the
declared array size.