Additionally, in commerce_paypal_ec.checkout_pane.inc you'll see the @todo notes indicating that we need to give administrators the ability to enable checkout panes on the special Express Checkout review pane. This will let us show the Shipping services pane on this page, for example, even if in the normal checkout workflow it appears on an earlier page.
Not sure I need to elaborate much here, but to reiterate, we need to add settings to the Express Checkout review checkout pane that let administrators embed other checkout panes inside this checkout pane. The idea is that we have our own checkout page and pane accessible only by Express Checkout orders, using the checkout router to access it when necessary. When customers do land here, it's because we need them to review their order before we submit our DoPayment API request, and if, for example, we have Shipping on the site, then they need to choose a shipping service before we know how much to charge.
The setting for this can just be a checkboxes element of checkout panes to include in the pane - but we should actually leave out the core Commerce checkout panes: cart_contents, commerce_payment, commerce_payment_redirect, checkout_review, checkout_completion_message, and the customer profile panes. All those things have been entered at PayPal, and we don't need to request duplicate information.
If a contrib checkout pane is marked for inclusion, it's going to have to be returned as part of the checkout pane form and then validated / submitted in the Express Checkout review pane's submit handler. There should be a @todo placeholder for this in the code as well.