The documentation for AudioSource actually specifies the different between these two where it states that:
You can play a single audio clip using
Play, Pause and Stop. You can also
adjust its volume while playing using
the volume property, or seek using
time. Multiple sounds can be played on
one AudioSource using PlayOneShot. You
can play a clip at a static position
in 3D space using PlayClipAtPoint.
An audio component is a component attached to a game object. So when you play an audio clip from an audio component it will be played at the transform position of that game object. You can repeat the audio being played. So this is great for background music.
In AudioSource.PlayClipAtPoint you can play an audio clip at any point in world space which you specify as argument. And it plays an audio just once and then deletes the audiosource for it. It is great for playing audio clip once.
AudioSource.PlayClipAtPoint creates an AudioSource and disposes it once the sound is played. Link to the docs
Knowing this, I put an AudioSource component to my Cameras for background music and use AudioSource.PlayClipAtPoint for short sound effects. If you want an even better performance, you could use an AudioSource component for the most used sound effects, but I don’t think there would be a substantial efficiency difference.