I'd appreciate any more explanation of the distinction of Stream Aggregate v. Aggregate.
Aggregate is a logical operator. It describes the process of applying aggregation function to data, (optionally) based on a column or set of columns to define groups. Because it is a logical operator, it describes WHAT is done, now HOW it is done.
Stread Aggregate is a physical operator - it is one of the (currently) two methods implemented in SQL Server to perform aggregation. This method requires that the data is sorted on the column(s) that define the groups. It works by reading rows one by one, keeping track of intermediate results in memory while discarding the actual rows, and then outputting a single row after the last row for a group has been read - at which time the internal counters are reset and the process continues for the next group.
The second physical operator used to implement Aggregate is Hash Match (Aggregate). This method uses an in-memory table that holds intermediate results for each distinct combination of values in the group by columns; these intermediate results are stored in memory at a location that is computed from a hash function (hence the name Hash Match). This method uses more memory than Stream Aggregate, but does not require that the input be sorted - and the output is also produced in a "random" order.