analogRead() from DEFAULT reference

In the analogReference() default mode the ref is the supply voltage either 5V or 3.3V, but I was thinking this voltage is not exactly reference material, it could be anything close to 5V but could well be 5% out, and maybe even floating depending on load on the pins! If the code assumes a "spot on" 5V, then the readings will also be out.

I have not tested this that is why I am asking here but I think I am right.

Yes, you are right, it is almost never 5.0V.
If the 5V is from a USB cable, then it could be easily 4.8V.
Therefor, the internal reference voltage is better. The Arduino Uno has an internal reference of 1.1V, but the actual voltage has to be determined for every Arduino board, it could be between 1.0 and 1.2V. It depends a little on the temperature and voltage, but it is okay for most things.

That does not mean that the 5V as reference is a problem. Suppose a LDR (to GND) and resistor (to 5V) is used for an analog input. If the 5V changes, the value with analogRead() stays the same, because both the LDR with resistor and the 5V reference go up and down in the same order.

In some cases a 'not exact' reference voltage doesn't matter.
e.g. voltage dividers (thermistor/resistor) or other ratiometric sensors.

Take a pressure or current sensor that outputs half of it's supply voltage when idle.
If the supply and Aref are 3.3volt, the A/D will return ~512.
If the supply and Aref are 4.75 or 5.25volt, the A/D will ALSO return ~512.

Sensors like the LM35 output a voltage, depending on the temp. Here a stable Aref is important.
For that we have an internal 1.1volt Aref (and/or a 2.56volt Aref in a Mega).
Leo..