For the performance question, I can state that there is no noticeable performance hit on the pages that we use it one. Accurately speaking if the page loaded at .457 seconds it may no load at .468 seconds, but we only track to make sure pages are loading under 1.0 second, preferably under .8 seconds, so the difference between the two would be negligible for us.
We selected the visible if logged in and paid member option, because it was easier to implement, and it could apply across all content or to specific content areas. For example, for one client we just wanted it to apply to headline news items, and ONLY if the referenced article became unavailable. So the we have the membership check as an embed file, that’s called only if a field in the content is equal to a specific value. Basically, when the client is posting related news items from anywhere, they write a summary, enter in the proper attributions, and a link to the full article. Additionally, though they state whether the article requires No registration, free or paid registration. Another field marks that the article is currently available on the web, and a third allows the full text of the article to be stored. Full text articles are never displayed for free or non-members. But if the article becomes “unavailable” on the web, the user is a paid member, and the full text is available. Then the script will display the full text for the individual.
For purchases, I’d probably set-up something like Expression Engine does, where a list of everything you’ve purchased is available. I’m not certain if Simple Commerce keeps track of this, but I imagine something like Solspace’s Favorites could be adapted for it. I’m a big fan of continuous availability though; probably because I purchase and download things months before I actually use them, so frequently have to go back to the vendor to download again, or search through my back-up or archives. The vendor approach is easier; and I rate vendor significantly higher for that convenience only.
But if you were going for a onetime download only, then you’d probably want a script that encrypts the link, so it’s only usable once or to use a cookie or session variable to store information on what was purchased and make them only available for that session or that day (if cookie). I haven’t done this. I have some random ideas, but someone else may have more practical experience.