in the syntax [H|T], H is an element and T is a list (at least for proplist), in your code [reverse(T) | [H]] creates a list which first element is the result of reverse(T), and which tail is the single element list [H].
If you want achieve the function this way, you should use the syntax proposed by fenollp.
If you want to write an efficient code, you should avoid to make multiple intermediate copy of the partial results, and avoid non tail recursive calls (in order to limit the size of the call stack:
reverse(L) -> reverse(L,[]). % use an accumulator to create a tail recursive function
reverse([],R) -> R;
reverse([H|T],R) -> reverse(T,[H|R]). % all [H|R] can be fully evaluated before recursively calling reverse
% this is what is called a tail recursive function
% in addition, the construction of [H|T]
% does not require to make a copy of T