Well, if you create them using the argument, then the code for LSTM can efficiently parallelise part of the calculation of the gates that requires the previous hidden state to be multiplied by a weight matrix - this can be done for all layers at once in one parallelised operation. I don’t know how much speedup that produces.
One disadvantage of using the argument is that all hidden layers have to have the same size.
I think that about sums up the pros and cons, so, unless you want hidden layers of varying sizes or stranger model architectures, the argument method seems to be the best and easiest option.