If I understand this correctly, the following point is actually a bit misleading:
3) Recursively find the smallest distances in both subarrays. [...]
I think it should say: Split the subarrays recursively until they contain a small number of points (maybe 2 or 3? It doesn't say) and then find the smallest distance in each of this small strips. Then we proceed with 4)-7) and apply a y-strip search for every border between all subarrays that we created.
Here is my understanding of what happens, it doesn't mention array splitting because I think this only confuses what is going on:
1) Sort all points by x. Walk over the sorted array and calculate the distance for each consecutive pair of points, ie. each point and the one that follows it. We get a minimum distance 'd'.
2) Sort all point by y. Again, for each point we calculate the distance to its direct following neighbor(s) in the sorted array. Unlike '1)', we do not only consider the direct neighbors, but all neighbors that are less than 'd' ahead of the current point.
When we find a pair with distance smaller 'd', we use this new distance as our new 'd' from this moment on.
This should give us the smallest d.
Basically, splitting an array recursively until only pairs remain (which is what I guess they imply) is in effect the same as simply walking over the array and comparing each consecutive point pair.
There is one difference in my step 1) though: they only calculate the x-distance of every 2nd point to its successor (there is a subarray border after every 2nd point). This may help (because they are doing only half the work) or be detrimental (because they may no get the best d from this first pass).
I haven't verified this, please let me know if I understood this wrong or if there are problems with my 'translated' approach.