Texture Painting vs. Materials Assigned to Vertices
In short, texture painting and materials serve different purposes, it's not really an either-or situation.

Basically, texture painting is creating a texture, not a material; materials are different than textures.  A material tells the render engine how the object interacts with light, a texture is simply a set of colors.  Textures are very useful for creating materials, textures can be used to determine the color of an object, be used as a mask, etc.  But in order to have a render you have to have a material, textures are just a part of a material and texture painting is just one way of creating a texture.
To paint a texture onto an object using texture painting the object must be unwrapped.  Then as you paint the texture on the object in the 3D viewport, Blender paints on a 2D image in the UV/Image Editor.  This texture can then be saved as a .png (or other picture format) and used in a material to affect the rendering.
To assign a material to individual faces, select the faces in edit mode and hit the assign button in the material editor (with the proper material selected of course).  This will assign that material to those faces.  You can have the same material applied to many different objects, whereas (unless they share the same UVs) a texture painted on one object almost always won't look right at all on another.