Does exploiting a spatial Locality in Cache always leads to a lower miss rate?
Spatial (and temporal) locality are both heuristics. Many (in fact, most) algorithms run on data structures in some sequential manner, which many times means that the memory used is consecutive.

However, there are examples where spatial locality may actually be very bad. Perhaps the most common example is scanning a 2-dimensional array: consider an $n\times n$ array, then in the memory, it is represented as an $n^2$ length array, where the entry $i,j$ is in cell $i+n*j$.

If you scan the array row by row, then spatial locality is excellent, your cache will always prepare the next row.
However, if you scan by column, then not only will you always get a miss, but using spatial locality, you will actually retrieve the same rows over and over.