If you look at the docs of concat
Yes it is fine. concat function is flexible enough.
The concat method creates a new array consisting of the elements in the object on which it is called, followed in order by, for each argument, the elements of that argument (if the argument is an array) or the argument itself (if the argument is not an array). It does not recurse into nested array arguments.
It internally checks what you are passing and do the things.
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
Update :
var newArr = arr.concat(obj);
Means you are passing a single object to concat function.
var newArr = arr.concat([obj]);
Means you are passing an array with being a single object in it.
Basically [] denotes an array.
.concat()is funny... it invokes a spread operator if the provided argument is an array. Sometimes nice, sometimes not so nice.