One point I never see discussed in these things is that you need to take a bit of care with digit-based representations because 0.1111... = 1.000..., 0.0111.... = 0.1000... - an argument could be made that perhaps while you know the number you're constructing via diagonalization doesn't appear in the list of numbers you created, but it may be a different representation of a number that does appear in the list.
The simplest way I know to work around that is by excluding numbers ending in infinite strings of 0s or 1s from the list. Anyone know a nicer way?