During the registration process, WP-Members uses wp_insert_user for a number of fields (those fields that would be required for any new user creation); then for the rest of the fields that would be optional, either wp_update_user is used (for the user_url value) or update_user_meta (all other fields).
My guess is that when W3TC database caching is enabled, it changes how these functions are processed and since first_name/last_name are not handled through this function by WP-Members, the function is setting them to null.
It may be possible to implement some changes to the registration function to handle more fields through wp_insert_user. That might solve it. I’ll have to do some research and testing before making a commitment.