1:100 is a vector already. Addition square brackets joins all elements to a vector. And this does not change anything on the data, but needs time.
If a grouping is required, parenthesis are more efficient, because the do not cost any runtime. They are considered during parsing the M-file.
The square brackets could be overloaded, if the contents contains user-defined objects. Therefore the JIT should hesitate to "optimize them away". Imagine:
a = 3; b = 10;
for i = 1:100
if rand > 0.5
eval('b = myStrangeUserDefinedObject');
v = [a:b];
Another idea: The runtime difference is small, but measurable, it might vanish with some JIT versions. But the code is cleaner and possibly easier to debug, if the unnecessary brackets are omitted. Compare:
x = a:b;
y = [a:b];
z = [[a:b]];
The last line forces the reader to think twice and some doubts will remain, while the first line is perfectly clear. The intermediate case should catch the attention also, therefore I prefer "a:b" for reasons of simplicity.