Rats! I just spent a half-hour writing a reply and the forum logged me out and lost it.
Here's the short version:
Legacy code. The modUser object has a username field, period. The modUserProfile object has a fullname field and no other name fields, so there's no standard place to put the information. The decision (mistake?) to leave them out was made a long, long time ago and I'm not sure anyone can explain the thinking behind it.
Some workarounds:
1. Write a plugin that saves lastName,Firstname to the fullname field when a user is saved and a plugin to add those fields to the Create/Edit user form. Pull them out with an output modifier that parses the fullname field. You might have to modify the Tpl chunks for extras that use the fullname for something.
2. Create them as Extended Fields in the User Profile. This makes for slow and cumbersome searching for users and sorting them.
3. Co-opt one or two unused fields in the User Profile (e.g. fax, website, etc.). This makes searching and sorting fast and easy. If you use one field, you can separate the first and last names with a delimiter, e.g. Ray#Bob and parse them when you retrieve the names. Using two fields is better for searching and sorting. I'm not positive, but I think they'd be available with "userinfo" placeholders in this case:
4. Subclass the modUserObject and add those two fields. This might be the best solution, but it's the most difficult to set up. Searching and sorting is fast and easy, and any extra that uses toArray() to set its placeholders (many do), will set the placeholders for you. Some user-related extras might not work since they don't allow you set the alias of the user object.
Wherever you put them, you can use a plugin attached to OnWebPagePrerender to retrieve the two names and set the placeholders for you. That way, they'll be available anywhere in the front end, but page loads will be a few milliseconds slower.
There is no completely satisfactory solution that I know of.