Confused why outputs of a priority encoder could be X instead of 0 or 1
To me this is a by-product of all those logic synthesis programs (Quartus, Vivado, etc.)  Because the priority of the V(alid) signal overrides the values of x,y outputs, it effectively gives the synthesis algorithms another degree of freedom when optimizing the logic (this is an extremely simple version of course).

In more complicated scenarios if you say in your truth table that x,y must also be 0,0, when V is 0, then the program may over-constrain the logic map and as a result use more gates, whereas if you have a truth table that only cares that V=0 when presented with all 0's inputs and x,y values don't matter you may save some gates (for other uses).