In programming, don't think of multidimensional arrays in terms of traditional geometry unless you are directly trying to represent the world. It is better to think of each successive "dimension" as another array containing arrays. There are several use-cases where this may appear. However, if you are using more than three dimensions I would no longer think of it as arrays or even "arrays of arrays", I prefer trees are they are closer to how you would program something that needs more than 3 levels deep.
One example is a Tree, where you have a root node, which has nodes which also have nodes. If you wanted to sort something a tree is a wonderful tool. Let's say you wanted to sort a bunch of numbers that came in randomly. You would make the first number that came in the root. If the first number was a 5, and the next number were a 7, then you would put the 7 to "the right" of the root node 5. And if you got a 3 then a 4, you would insert the 3 to the "left" of 5, and then the 4 to the "right" of the 3. If you traverse this tree in-order (by always going left down the tree, only going back up when there are no new nodes and then going right), you will end up with a sorted list: 3, 4, 5, 7.
5
/ \
3 7
\
4
Here, you can see the tree structure. If you were doing this in C, you would use structs, which would looks like this (I am using pseudo-code):
struct Node{
int val;
Node left;
Node right;
}
There are lots of materials on Binary Trees (what I have been explaining), but primarily I wanted you to move away from the concept of arrays being "like dimensions in space", and much more of just a data-structure that can store elements. Sometimes a binary-tree or other data-structure is too complex, and a 5 or more dimensional array may be more convenient for storing data. I can't quite think of an example right now, but they have been used before.