Looking at what you have posted you are using for this value it seems that it should be working here. Please give this a try and use this value:
$PP_DirectPayment_optional[$nextIndex] = "".((isset($_POST["shipping_firstname"]))?$_POST["shipping_firstname"] . " " . $_POST["shipping_lastname"]:"") ."";
In my testing of the Direct Pay checkout with the value set like this I was able to see both the last name and first name in the details on PayPal. Please let us know if this works for you and I will ensure that we get this updated.