A 'using' statement is always better because a) you can't forget to call Dispose, even as the code evolves into different code paths, and b) Dispose gets called even if there's an exception. It also checks for null before calling Dispose, which may be useful (assuming you're not just calling 'new').
One non-obvious (to me, anyway) trick with 'using' is how you can avoid excessive nesting when you have multiple disposable objects:
using (var input = new InputFile(inputName))
using (var output = new OutputFile(outputName))
{
input.copyTo(output);
}
The VS code formatter will leave the two statements starting in the same column.