Actually those are fine for lvalues. One can do for example the examples below.
x[2] = 7
(* Out[57]= 7 *)
x[11][5] = 4
(* Out[59]= 4 *)
Subscript[w, 2] = 6
(* Out[60]= 6 *)
The documentation for Set
claims (first item in Details section) "lhs can be any expression, including a pattern". I don't know why that claim is made. If I am not mistaken, it is correct only in cases where the head of the left side expression does not have the Protected
attribute set. That said, one can unprotect and remove that attribute (I do not recommend this unless you really know what you are doing though).