En los arreglos tu accedes a un elemento mediante su posición osea un número entero. En el mapa puedes acceder a un elemento por su clave y está puede ser un entero, flotante, String, de hecho si no estoy mal, la clave puede ser cualquier tipo de dato o objeto de alguna otra estructura o clase Y en el valor también puedes guardar cualquier tipo de dato. Esto varía en cada lenguaje, por ejemplo en c++ hay que definir los tipos de datos que se van a usar