The reason for making nonvisible brush faces into nodraw is for all kinds of optimization. Nodraw faces are entirely skipped by the renderer, which reduces the number of things in the map that need rendered. One nodraw face might not make a difference, but as your map gets more complex and the number of nodraw candidate faces stacks up, the improvement in performance also gets bigger- even if it's only a few FPS, every bit is nice, and combined with other simple optimization techniques, it can help make a super graphics-intensive map run much smoother than it might otherwise. Additionally, nodraw brush faces do not receive lightmaps, which both reduces the map's filesize and reduces the amount of time that VRAD takes to compute lighting for the map. However, nodraw brushes are still solid to all objects, including players and bullets, will block
visibility if part of a world brush with opaque and/or nodraw textures on all sides (although due to the way visibility works in Source, players may still be able to see some objects on the other side, or the skybox if they are in an area visible to the sky), and are capable of sealing the map from leaks (if they meet the same criteria for blocking visibility).
As for your follow-up question, that's actually something that some of the more experienced mappers already do. It's not mandatory, though, if you're good at catching nonvisible faces that wouldn't already be removed by the compiler (although as your brushwork becomes more complicated, this can become more difficult). Personally, I only sometimes do that, depending on how complex the brushwork is in the area. Source does try to make our lives a bit easier, though. When compiling, brush faces that are exposed to the void or that are covered by another brush are removed, in a process sometimes referred to as "culling", which is effectively automatically painting them with nodraw. If only part of a brush face is covered or exposed to the void, the brush face is chopped in half so the part that would be culled can be culled without affecting the part of the face within the map, which helps reduce the effort needed when manually nodrawing things. There are notable limitations, however; brush faces belonging to any brush entity will not cull brush faces for any other entity, or for non-entity world brushes, so ensuring junctions between world brushes and func_detail brushes are nodrawed where feasible is important. And if the map is leaking, then brush faces exposed to the void will not be removed as the compiler cannot figure out which brush faces should be removed and which ones should be kept.