Because the conversion factor of both data type is different. parameter assigned in string value will be different from both data type.
in Int.TryParse does not contains culture specific thousand separator parameter in form of conversion parameter
for example
in Int.TryParse the form of parameter is
[ws][sign]digits[ws]
ws: White space (optional)
sign: An optional Sign (+-)
digit: sequance of digit (0-9)
and in Decimal.TryParse the form of parameter is
[ws][sign][digits,]digits[.fractional-digits][ws]
ws: White space (optional)
sign: An optional Sign (+-)
digit: sequance of digit (0-9)
,: culture specific thousand separator
.: culture specific decimal point.
fractional-digits: fractional digit after decimal point.
You can get more information from msdn. Int.TryParse and Decimal.TryParse