In reply to ssubramaniam:
The short answer is the BNF syntax does not allow it. A task only allows a subset of constructs within it, and always is not part of that set.
There is no need for the always construct in SystemVerilog.
always block_of_statements;
could be written as
initial forever block_of_statements;
and could also be written as
initial while(1) block_of_statements;
and
initial begin
forever block_of_statements;
end
You need to realize that the initial construct is not a procedural statement; it is an instantiation of a process, That process begins execution of the procedural statement that followed it.
always is just a shortcut for initial forever that shows the intent better as a process that is always present.