Finely grate 1 tsp zest from a grapefruit. Squeeze 1/2 cup juice from a white grapefruit.
Cut peel, including all white pith, from remaining fruit with a sharp paring knife and cut segments free from membranes. Chop enough grapefruit segments (use all colors) to measure 1/2 cup. Reserve 1 cup of remaining whole segments.
Boil juice, wine, shallot, and vinegar in a small heavy saucepan until reduced to about 1 Tbl. Reduce heat to low and whisk in butter 1 piece at a time, lifting pan from heat occasionally to cool sauce and adding each new piece of butter before previous one has melted completely (sauce must not get hot enough to separate).
Stir in chopped grapefruit and season with salt and pepper. Keep beurre blanc warm in a metal bowl set over a saucepan of hot water.
Cook fish and vegetables:
Preheat oven to 250 degrees F. Pat halibut dry and season with salt and pepper. Heat 1 1/2 Tbl oil in a large nonstick skillet over moderately high heat until hot but not smoking, then saute fish, in batches, if necessary, turning over once, until golden brown and just cooked through, about 5 minutes total. Transfer fish to a shallow baking pan and keep warm in oven.
Wipe skillet clean and heat remaining 1 1/2 Tbl oil over moderately high heat until hot but not smoking, then saute mushrooms with salt and pepper to taste, stirring, until golden brown, 5 - 7 minutes. Add endives and saute, stirring, until leaves are slightly wilted, about 1 minute. Stir in reserved whole grapefruit segments and remove from heat.
Serve fish over mushrooms, topped with beurre blanc and zest.