I haven't bought many domain names myself, but have set them up for many clients. The last domain I purchased was from Domain.com, for personal use. I have no complaints; it's a pretty straight forward purchase. You should purchase the domain name in your friends name; use their contact information. That way if the registrar goes away, they can still transfer the name to another registrar, for example.
A domain isn't particularly useful without a server to point it at, though. And that's where the "Is this actually a good gift?" question comes into play. If your friend is not technical, something like wix.com may be more appropriate. If they have an existing server, or have set up sites on hosting sites like wix.com, then go for it.