There’s another problem with arrays: they can’t be too large.
First reason is address space fragmentation, esp. on 32-bit platforms.
Second reason is insert time can be very high. Sure, the average is usually amortized using exponential growth. The worst case however is horrible, you copy 1GB RAM just to insert another 16-byte item.