Why doesn't the recursion theorem prove there is an undecidable finite set?
Your argument "goes backwards."

Note that your definition of $R$ depends on $D$ (step $2$). This means you can't conclude that no machine decides $A_R$, merely that $D$ specifically doesn't.

Basically, what you've written looks like this:


CLAIM: there is some $x$ such that no $y$ does [task involving $x$].
PROOF: picking some $y$, we build an $x$ such that $y$ does not do [task involving $x$].


And this isn't valid.



It may help to consider an argument of the same "shape" but about a more concrete topic. 


CLAIM: there is a natural number $n&gt;1$ which isn't divisible by any prime $p$.
PROOF: fixing a prime $p$, let $n=p+1$. Then $n$ isn't divisible by $p$.


The subtle nature of decidability often makes questions about it appear more complicated than they are, and I think this is such a situation.



It's worth noting that the recursion theorem can be applied here to show something - specifically, that the $A_R$s are not uniformly decidable.

Specifically, suppose I have some total computable function $f$. By the recursion theorem I can whip up a machine $R$ such that $R$ behaves as you describe for $D=f(R)$, and so $f(R)$ cannot decide $A_R$. This means:


  While for each $R$ there is some $D$ which decides $A_R$, there is no computable way to find such a $D$ given $R$. 


This isn't surprising - the same result follows more simply from the unsolvability of the halting problem - but it is an important example of how the recursion theorem can be used to prove non-uniform decidability results even when each of the languages in question is decidable.