It appears you are right, the ping node does not keep additional properties in the input message. I think that counts as a bug in node-red-node-ping so I suggest you submit an issue.
The (excuse) for the way ping works is backwards compatability.
Before I added Triggered mode to the ping node, it was purely a sender (no input) but I realised that folk would need info downstream to correlate what they sent. Additionally, as it is a completely async operation & more than 1 item can be pinged, it was decided to pass the original payload in msg.ping so the user could access the extra meta data.
Potentially, I could have held onto and resent clones the original msg for each ping result in the CSV/Array, but this didnt feel right at the time of writing the PR.
Hmm yes - Can't think why we didn't pass through the original properties. As you say - originally it was just a generator node so there would never be any expectation of additional data. It would make sense if it was consistent with other nodes and did pass through if possible, as having to create an array and add extradata is a bit of a faff for simple use cases.