Always block in task

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.