F-buffer is a smart (and possibly transparent) way to do multi-pass rendering.
1. It avoids the need of full-screen temporary buffers as only the pixels (fragments) affected will be stored in it.
2. The hardware can have control over the granularity of multipassing (per DrawPrimitive, per triangle, per 1024 pixels, etc.), while the smallest granularity available to traditional multipassing is per DrawPrimitive.
That can mean 1-2 order of magnitude less memory use.
3. All per-fragment data needed for subsequent passes is stored in the F-buffer, so there's no need to send and process the vertex data multiple times.