Why does BSD make have both?:

$(ARG)

and

${ARG}

I have not found any difference, even with doing expansion rules
inside and stuff.

Is one preferable?

I used to follow a pattern where I would use one of them for a
command and one for a var like:

$(CC) ${FILE}

But that's just convention.

When I use BSD I *really* want to follow the accepted idioms.