If you really want to get rid of the question marks and colons you can try this:
var points = from g in groupedData
from ep in g
select ep).OrderByDescending(x => x.GetType().GetProperties().Max(y => y.GetValue(x,null))).FirstOrDefault());
Explanation:
This basically uses reflection to get the list of properties in the Item (in your case X, Y and Z) and then order the items based on the Max between the properties. Then select the first one from the list which should be the item with the highest property.
The positive side of this is that if you decide to add one more property (lets say K) you wont have to change anything. (Immagine what you would have to do if you want to also add K to the comparison you had with the question marks and colons).
Note:
If you have other properties in your class that you dont want to use in the comparison you can add replace x.GetType().GetProperties()
by
x.GetType().GetProperties().Select(prop =>prop.PropertyType.Name.Equals("Int32"))
This would only get the integer properties. Use only if you need it or else ignore.
hope that helped