I must say that I make quite extensive use of Bezier Curve objects in Blender, I use them a lot more than I actually use mesh objects.
I work mainly in architecture mostly doing archviz, design and interior decoration projects. I know this is not a popular nor a 'standard' modeling technique, I am perfectly aware how exotic it is and that most people's workflow is far different from mine, even in similar business areas.
Curve objects in Blender suffer from severe limitations when compared to meshes, like limited availability of modifiers, poor texture mapping capabilities, can't be unwrapped, can't have particles or participate in Boolean Operations, and can't be rigged or animated like meshes do.
That being said I find that bezier curve objects kept live and without converting to mesh have certain advantages and also particular constraints that make them well suited for these use cases.
By being inherently bidimensional, bezier curve objects (in 2D Mode) automatically guarantee a flat 2D surface avoiding dealing non planar surfaces originating from unintentional snapping, which is a frequent requirement recreating real world situations.
Because they you don't have to work with faces directly, you don't have to worry about topology nor maintaining a good edge flow, like you would with mesh objects. This lifts a huge burden and frees you from worrying about mico-managing
Since curves have a builtin quality setting for curved segments smoothness you also don't have to use Subdiv Modifiers which are often a source of concern for topology. Mixed straight and curved shapes live happily together automatically handled by the bezier curve fill engine as well; so you also avoid having to worry about adding support edge loops or unwanted smoothing in straight areas.
Because the fill engine also handles automatically inner curves and recursive shapes inside shapes it easily creates holes and islands inside outlines, avoiding extensive use of Booleans, which are slow, error prone and often source of frequent problems and frustration.
The builtin beveling, offsetting and extrusion features allow for a non destructive workflow, which can easily go back to and change parametric without having to redo manually.
Bevel objects also allow defining extrusion shapes along complex paths, common in metal work, frames and railings frequently found in architecture, and often provided in CAD format by manufacturers.
In building and construction area, Bezier curve objects end up being very versatile in designing:
- Building walls, which can conveniently be defined as an extrusion of an architectural plan outline that is often provided by the client, guaranteeing planar closed shapes.
- Facades, curtain walls, and elevations can also be easily defined from client provided elevation drawings, since again they are mainly bi-dimensional extrusion structures with holes and island that are well defined from a 2D closed curve with holes for windows, doors, openings and stonework around them.
- Pavement or floor finish areas (like an room with a certain type of wood, carpet or ceramic tile finish) which often a closed boundary combining complex shapes with mixed curved and straight geometries.
- Concrete slabs, or extensive ceilings with arbitrarily shaped and numerous openings for lighting and holes for installed equipment, are also easy to define because you don't have to worry about topology, manually deal with gaps, fill holes nor use booleans.
- Railings, metal work, extrusion profiles and frames along complex paths are easily handled by the builtin Bevel objects.
- A lot of other real world objects made from sheet materials (like table tops, wood board, wood furniture benefit from the same advantages like easy extrusion, tessellation and beveling.
Other than that, they are also very useful as complement for illustration based graphical design type of work, like Logo design and symbol creation, or 2D type of motion graphics often used in TV, video and animation work.
NURBS surfaces on the other hand are more suited for smooth almost organic-like shapes used in vehicle design like cars, boats, airplanes, or more aerodynamic industrial design objects.
They differ from subdivision surface because you never deal with faces directly, the emphasis on precision, trimming, and Boolean operations.
Looking at Blender alone it's hard to imagine using them as an actual full features modelling tool, since Blender's NURBS tools are admittedly a stub, with very limited features and lacking tools.
They are there more as a remnant of the past than as an actual production ready tool. Other dedicated software like Rhino, MoI, Katia, etc. have actually usable and full featured NURBS modelling tools, capable of very accurate surface definition, surface trimming, Boolean operations, etc.
They are very suited for actual technical drawing extraction from models, since correct and exact elevations, plans and sections can be extracted from a NURBS or Solid based 3D model.
I don't frequently use them myself, but from what I gather they are mostly used for animations purposes, mainly to define animation paths objects must follow, sort like a railway. They are mathematically more accurately and precisely defined, yielding smoother animations and avoiding jitters and sudden movements while animating.