I believe that the order of evaluation of nested assignments isn't specified by ISO C. So the compiler is free to evaluate the nested assignment in a completely random order, which might give code that isn't possible to optimize.
Another explanation could be that since there is no situation where it is motivated to use nested assignments, perhaps CW doesn't even bother with optimizing them.