Can I influence the activity source contact with the membership API Create action?
At this point, no, at least as long as you aren't using the API as the member him/herself.  The relevant line is https://github.com/civicrm/civicrm-core/blob/4.6/CRM/Activity/BAO/Activity.php#L1886:

// create activity with target contacts
$session = CRM_Core_Session::singleton();
$id = $session-&gt;get('userID');
if ($id) {
  $activityParams['source_contact_id'] = $id;
  $activityParams['target_contact_id'][] = $activity-&gt;contact_id;
}


Basically, CRM_Member_BAO_Membership::create calls CRM_Activity_BAO_Activity::addActivity, and the code above just forces the source contact to be whoever's logged-in.

Ironically, just a few lines above, the activity source contact is set to be the ID set in the contact_id property of the activity object passed to the function from the membership, but this overrides it.