A hash table is a natural way to represent an array. (In fact, several interpreted languages implement all of their arrays as hash tables.)
The indices of the element being accessed are used as the argument to the hashing function. Once the hash bucket where the element resides has been determined, the bucket is searched for the element with the correct coordinates. If the element is missing, then it is assumed to have the default value.
The benefit of this approach is that if the hash function is effective (i.e. each hash bucket doesn't have too many elements in it, so that the search is fast), then accessing an element in the array is effectively O(1).
However, achieving this level of performance is not simple.
First, the hashing function must be chosen so that is relatively unlikely that a large number of the array elements will hash to the same bucket- for sparse matrices, this is not usually a problem (since there are relatively few interesting elements to begin with), but as the array becomes less sparse, the size of the hash table must grow. Eventually, it may become large enough so that there is no savings realized by using the hash table. In addition, if the pattern of the non-zero elements in the sparse array triggers degenerate behavior in the hash function, the hash table may become quite slow.
Second, the hashing function must be quick to compute. Even though a hash table can (at least in theory) implement array element access operations in O(1) time, the constant overhead is much higher than that of ordinary array element access.
One large problem with the hash table representation is the lack of information about neighboring elements that can be easily derived from an element. Using the linked list method, it is easy to progress from non-zero element to non-zero element- just a matter of traversing along the linked list. In a hash table, the closest thing would be traversing through a bucket- but the elements in a particular bucket will typically represent elements scattered throughout the array, and there is generally no useful meaning to the order of the elements in the bucket.