Stripe is much more flexible IMO. PayPal is all about customers having a PayPal account, and will really push non account holders to create an account when paying.
Stripe supports a lot more payment methods: both global and region specific wallets, bank transfers, etc - there's even a beta (I think in EU only for now) to accept PayPal payments via stripe.
If you wanted to compare stripe you'd really need to compare it to Braintree (which is owned by PayPal), which offers a similar concept: integrate once to support multiple payment methods, but from memory it supports less than Stripe.
you should use a payment orchestrator so you can easily move between paypal and stripe to another payment processor if needed. a quick search of hn shows the horror stories of people getting kicked off of stripe/paypal without notice and losing their revenue / subscriptions overnight
For a current $CLIENT we actually implement both (and Amazon Pay), with an abstraction of sorts within our own code (each payment gateway is represented by a service class implementing a common interface).
Stripe supports a lot more payment methods: both global and region specific wallets, bank transfers, etc - there's even a beta (I think in EU only for now) to accept PayPal payments via stripe.
If you wanted to compare stripe you'd really need to compare it to Braintree (which is owned by PayPal), which offers a similar concept: integrate once to support multiple payment methods, but from memory it supports less than Stripe.