I think what func_detail does is it takes some of the pressure off of having the engine render whatever it is, essentially telling the game "Hey, this stuff here? Yeah, don't bother fully rendering this, it's unimportant"
func_brush, because you can give it a name, can be used for a ton of fun stuff. Invisible walls, visible but intangible walls, be sent kill inputs, etc.