As we see above $ provides a very concise way to print integers as strings. On the other hand, intToStr is verbose and an oddly named function.. the only one named as _fooToBar (we don't have strToInt, but parseInt.. I wish it were named as the former). Also, if one wants to use intToStr, they need to first import strutils.
One might use intToStr to add leading zeros:
import strutils
let i_arr = [-100, -50, 0, 0, 123, 1000]
for i in i_arr:
echo intToStr(i, 10)
-0000000100
-0000000050
0000000000
0000000000
0000000123
0000001000
But then, the similar result can be achieved by the general formatting fmt function from strformat. I said similar because while intToStr doesn't count the negative sign to be part of the minchars count, fmt does count that as part of the zero-prefixed formatting specification "010".
import strformat
let i_arr = [-100, -50, 0, 0, 123, 1000]
for i in i_arr:
echo fmt"{i:010}"
-000000100
-000000050
0000000000
0000000000
0000000123
0000001000
So, still.. there's isn't a strong case to use intToStr.
There is no reason to worry.
$ is Nim's general "ToString" operator. If you know that it exists, if it gives you the desired results, and you don't think $ is ugly or cryptic you can use it.
int2Str() is known from Pascal variants, so Nim beginners may expect it to exist and may prefer it. And it may give us special formating options as leading zeros or padding.
Some people may still prefer formating more like C does it, at least for floats.