You're right, I forgot about switching out some dodge gems for agility a couple weeks back and used my class's base bonus agility. If you'd like to change the numbers to raid buffed, though, using your numbers, I would have:
705 def, 435 dodge, 317 parry, 104 block, 304 agi
I will however disagree with your method of not flooring your defense rating -> defense skill conversion. If you do not do this, you consistently overestimate the value of defense rating as you will never get as much avoidance from it as you calculate. In my case, with 705 defense rating, I have 543 defense skill. If I were to add (somehow) 4 defense rating, it would bump me up to 544 and increase my avoidance. If I were to instead add 8 defense rating through a gem, I would still be at 544 defense skill and gain nothing from the extra 4 points.
Also, in your formulas you are not using the correct paladin agility conversion. Paladin agility conversion = (0.0192 dodge%/agility)/1.15 = 0.0167 %dodge/agility or 59.8958 agility/%dodge.
Given this, my MATLAB code for my avoidance is as follows:
Set the "newAvoidanceFlag" to true for post-3.2 calculations, false for pre-3.2.
function total = avoidance(defenseRating,dodgeRating,parryRating,agility,newAvoidanceFlag)
dodgeCap = 88.129021;
missCap = 16;
parryCap = 47.003525;
k_value = .956;
defConversion = 4.91850;
dodgeConversion = 39.34799;
parryConversion = 49.18499;
agilityConversion = .019200^-1;
if newAvoidanceFlag == true
dodgeConversion = dodgeConversion * 1.15
parryConversion = parryConversion * 0.92
agilityConversion = agilityConversion * 1.15
defense = floor(defenseRating./defConversion);
dodgeUndiminished = dodgeRating./dodgeConversion + defense .* .04 + agility./agilityConversion;
parryUndiminished = parryRating./parryConversion + defense .* .04;
missUndiminished = defense .* .04;
dodge = (dodgeCap.^-1+k_value./dodgeUndiminished).^-1
parry = (parryCap.^-1+k_value./parryUndiminished).^-1
miss = (missCap.^-1+k_value./missUndiminished).^-1
total = dodge + parry + miss;
Now, with these numbers, I get the following post-3.2 raid buffed values (agility is +17 due to BoK, might be 18 if you're lucky):
As you can see, even with the bonus agility factored in, dodge is still preferred to the other avoidance stats unless I were to have even more dodge than I alread do (it's getting close to even), or unless I were to increase my defense rating by the exact amount necessary to get to another defense skill point.
avoidance(705,435,317,304,true) = 31.9134% avoidance
avoidance(705+16,435,317,304,true) = 32.1368% (+.2234)
avoidance(705,435+16,317,304,true) = 32.1523% (+.2389)
avoidance(705,435,317+16,304,true) = 32.1367% (+.2233)
avoidance(705,435,317,304+17,true) = 32.1053% (+.1919)
Not taking into account the stepwise nature of defense rating -> defense skill would make the calculations show +.2421% avoidance for adding a 16 defense gem, erroneously making me believe it is the best thing to socket, which is not at all what I would get were I to actually socket that in my gear (in this case, two points of defense rating would be wasted). Note that since the diminished values of dodge/parry are very close, however, if I -could- make a small change to somehow add only 14 defense rating, that would be better than adding 14 dodge rating or 14 parry rating in terms of avoidance. (see exception 2 that I posted earlier).
On the other hand, you do bring up a good point - if you consider your avoidance raid buffed, the extra Agi any tank will have is worth nearly 200 points of free dodge rating, which you should take into account when considering the two exceptions to the general rule that gemming dodge is best for max avoidance as I stated earlier.