I myself am creating a terrain generation algorithm and would be interested in knowing why others have chosen midpoint displacement over perlin noise. Minecraft is an example where midpoint displacement was preferred. If anyone knows why I would be glad to hear it.
Different methods of fractal generation tend to produce terrain with different characteristics. The reason for their use could be stylistic rather than for any technical performance reason. Different algorithms also allow you to change different parameters to give the final result. I have no direct answer re: MD vs Perlin though, sorry..
Notch posted about this on his blog:
I used a 2D Perlin noise heightmap to set the shape of the world. Or, rather, I used quite a few of them. One for overall elevation, one for terrain roughness, and one for local detail. [..] But [it had] the disadvantage of being rather dull. Specifically, there’s no way for this method to generate any overhangs.
So I switched the system over into a similar system based off 3D Perlin noise. Instead of sampling the “ground height”, I treated the noise value as the “density”, where anything lower than 0 would be air, and anything higher than or equal to 0 would be ground.
Here's some reasons to prefer midpoint displacement:
Midpoint displacement noise is meaningfully faster to calculate (in my experience).
And, Perlin noise has some biases; it only approximates full spectrum white noise but is closer to Gaussian; midpoint displacement may be generated with a uniform (or any) distribution.
But, as another answer said, it's my understanding that Minecraft does use Perlin noise; I don't see how you could efficiently implement midpoint displacement noise for Minecraft, where the map goes on forever. The advantage of Perlin noise here is that you can calculate it at any point without calculating any other points around it. For midpoint displacement, you have to generate it all at once, since you need the boundaries of each chunk to match.
(EDIT: Removed mention that midpoint displacement can produce wrapping heightmaps - Perlin can do this just as easily.)