Nurbs - composed of curves, which, mathmaticly, can only be composed of up to 4 sides, thus are a bit limited when it comes to complicated objects unless you patch model. As they are made up of curves, they are very smooth.
Polygons - composed of points with surfaces spaned between them, they are mathmaticaly only composed of coordinates, so you can have as many sides as you want with a polygonal object, so they are pretty free to make whatever you want. As they are composed of coordinates, they are not as smooth as nurbs, so in order to get a smooth surface, you have to have a lot of geometry.
SubDs - I don't know as much about SubDs because I rarely use them. I'm not sure how they work mathmatically. I do know that what you pretty much get is the smoothness of nurbs, with the freedom of polygons, much like d24e said. They are very taxing on computers, though. My system can't handle them very well, which is why I don't mess with them.