stack (LIFO - Last In, First Out) - data is layered on top of each other, the oldest at bottom, newest at top, useful where you need layered stuff such as tiers of units, defenses, whatever in games. Moreover, GUI windows often are stacked on top of each other; you have to close topmost to get below, so you don't accidentally alter something below the active window. The stack object would help ensure this. Also it could be used as game resource storage or an active game element (train wagon coupling, where you have to uncouple outer wagons to get the inner one).
queue (FIFO - First In, First Out) - data is queued, the oldest element is the first one to go out, which is very useful for tack/order queuing, turn management (turn based games!!), AI routines and so on. You would add new elements and know that eventually they will be processed. This would make turn based games and AI development MUCH easier.
As for array changing size, does it change size when an element is removed? I think that you have to manually remove the element. Moreover, whenever you take an element, you have to move ALL other elements to their new positions etc.; stack and queue would take care of that automatically.