Following your footstep, I have pinpointed the exact criteria for XL height for rattatas, which has to be equal to or greater than 0.38m
The other two threshold is not totally clear yet, I have narrowed it down to the following range:
XS height: either 0.22 or 0.23m, since I found a 0.22m xs rattata and a 0.24m normal one.
XL weight: this is a big range, I found a 4.29kg normal rattata and a 4.42kg XL rattata, so the threshold should be between 4.30 and 4.42kg.
I checked GameMaster and there are two relevant values for Rattata:
It seems that the threshold for XS and XL is (pokedex_weight_kg +- 2 * weight_std_dev). For XS, we get 2.625 kg and for XL we get 4.375 kg. Both of these seem to fit with your data and the data provided by OP.
Same goes for height, these values can be found in GameMaster:
Using the above formula we get 0.225 m for XS and 0.375 m for XL. Again, this seems to fit your data. More data would be needed to verify this though.