Both scale the same for insertions (amortised O(1)).
Both scale the same for fetches (amortised O(1)).
A fetch should take a little longer with a hash, but I suspect this wouldn't be the deciding factor in most cases.
You can really only delete from the start and from the end of an array — anything else can be expensive since it requires shifting the elements — but deleting from a hash should be cheap. For tiny hashes or arrays, this shouldn't be significant.
You can really only insert at the start and the end of an array — anything else can be expensive since it requires shifting the elements — but inserting into a hash should be cheap. For tiny hashes or arrays, this shouldn't be significant.