Ok, I finally figured it out, I have read very carefull msdn and I was missing the Parameters part for subreport. It is not mentioned that they are mandatory even if they have nothing to do with the data supplied to subreport.
Also from my test, it seems that the parameter must be passed with distinct values for each subreport processing event (if I sent it a fixed/static value it still duplicated the subreport information). So I have created a unique value field in main report data, created a new parameter for subreport, match these two in subreport properties, and now it works...