Is there a way to set up PCPs without the user having a login?
I've encountered this issue before - and found it easiest to go with allowing user registration.  I agree it'd be better if this wasn't necessary, but haven't found anyone willing to fund that improvement.

You haven't specified your CiviCRM version or CMS, which makes it a little more difficult to answer, but the general approach is to create a profile that you intend to use for PCP signup, go into Advanced Settings for that profile, and enable user registration there.  This will enable signup directly on the PCP page.

Note that if you're using Drupal, and you've disabled user registration altogether within Drupal, the user registration block won't appear on the profile.  I assume it's the same for Joomla/WP.

However, since you're enabling user registration, that also means that the default user registration page will also be enabled.  I like to use theming to break the normal user registration page - that will drastically cut down on the number of spam user registrations you'll see.