What you’re describing is typically caused by a model where the high resolution version is very, very similar in shape to the low resolution version and you don’t have a lot of actual displacement that’s necessary.
ZBrush creates the map using the amount of grayscale value that’s necessary to reproduce the features when the displacement map is applied. When heavy displacements aren’t necessary, the map that’s created will appear to the naked eye as being mostly gray. But as you saw, when you do an Alpha>CropAndFill, the detail is indeed there in all it’s glory.
Why does ZBrush do things this way? Quite simply, it’s to avoid artifacts like you’re getting in Photoshop. Let’s say that your displacments require a total of 512 shades of gray. Alphas are 16 bit images, which mean that they have an available 65,536 shades. If you insist that all the shades from black to white be used, what can the computer do? You only NEED 512. So in such a case, the computer has to interpolate – which in this case is basically a fancy term for “make an educated guess.” The more interpolation that’s necessary, the more likely it is that errors will crop into the equation.
The bottom line is that the alpha that ZBrush creates has exactly the amount of information necessary to re-create your hi resolution details. If you apply the map in your rendering engine with the correct settings, those details will be brought out in the render. I know it’s tempting to think that the map can’t possibly have enough data when you look at it with the naked eye, but the computer knows better. 