I'd be interested to learn if Stripe is able to relax this requirement. I've always found it a bit peculiar since the differences between charging Directly or as a Platform deal more with your fine print, and less with the user experience you offer.
That said, depending on your setup, Spreedly does support "third party tokens," which allow you to create tokens in Stripe.js and pass those to Spreedly. The caveat is that the payment method you create on Spreedly will only work for Stripe, which may negate your reason for using Spreedly:
If your card data is already stored in Spreedly and you need to move it to Stripe, another option is moving the card data to a customer on your platform account, then "sharing" the customer with a connected account to charge directly.
Unfortunately, this is a bit of a headache with the default operations, but it would look like this:
1. Create an empty Customer on your Stripe account, grab the cus_id:
2. Use the Spreedly "store" method to attribute payment details to that customer. You must specify the cus_id from step 1:
3. Follow the "sharing customers" guidelines from Stripe:
That's 3 calls just to move the card data, and after that you need another to make the charge.
If you do go this route, I'd recommend working with Spreedly to eliminate Step 1. They should be able to return a cus_id in their "store" call, or allow you to create a "receiver" which would allow you to grab the cus_id in the raw response from Stripe.
Colin