I know this is an older post, but I had the exact same scenario and after days of searching, I finally figured out a workaround to the Guest checkout not appearing for an express checkout.
I basically had to create a PayPal Express Checkout app.
It ended up being much easier than I expected.
Here are the steps I followed:
1) I logged into my PayPal account and went here to create a paypal app: https://developer.paypal.com/developer/applications/create
I saved the sandbox and production Client ID values that were created, I needed them later
2) Then I added the checkout.js script to my checkout page:
PayPal recommends referencing their script and not downloading a local copy to your project.
3) Next, I went here to help create the javascript I would need for my checkout page: https://developer.paypal.com/demo/checkout/#/pattern/client,
I used the Client Side REST, and pasted it into my checkout page. I updated the sandbox and production client id values with the client id's I created in step 1 above.
4) I added a hidden variable on the page:
that I set from the code behind with the grand total including shipping. I know there's other ways to do it, but I'm a creature of habit. :)
5) Then, instead of the hard coded amount in the generated javascript, I grabbed the amount value from the hidden input object: amount: { total: amount.value, currency: 'USD' }
Now, when the customer lands on my checkout page, I display a pretty datagrid/table showing their order details and the total with shipping. When they click the "checkout with paypal" button, paypal performs an express checkout for me with the grand total, and I'm done.