It looks like when we cancel on our end, we shortly afterwards get the cancellation back from Paypal and process it in RecurringQueueConsumer::importSubscriptionCancel
Here's a list of contacts with these recent doubled activities (though there are a few others that aren't Paypal that might be something else).
I think we can just not add the activity when we already have a cancellation for the same contribution recur id.
Additionally, the cancellation coming back from Paypal is overwriting the cancellation reason with "(auto) User Cancelled via Gateway" (and also overwriting the cancel and end dates).
Ideally, we'd also like to backfill the cancellation reasons from the log table.