First off, it would help if you included comments explaining what's going on and where you think the problem is, especially with a somewhat complicated patch like this. I'm not really seeing the array size being changed anywhere.
You might be referring to the [phasor~] on the left side of the [pd process] patch. This seems to be altering the grain size by playing it at different speeds. But it is also being used to look up the table, which causes it also to be played at different speeds, resulting in pitch change. If you want the pitch to stay constant when you change the grain size, you should use the [phasor~] on the right to look it up, as it seems to be the one controlling the overall playback speed. I tried this, and it seems to have the result of sounding pretty much like the dry audio. So now I'm wondering, what is the effect you are going for?
Also, you might want to be able to figure out the playback speed of the original file. You could do it like this:
[r loop1]
| [samplerate~]
| /
[pack f f]
|
[/ ] [1 \ <--use this numberbox to adjust the speed
| /
- |
[$1 5(
|
[line~] <--to smooth it out
|
[phasor~]
You also have two delay lines with the same name. You should fix that.