I think it's important to distinguish between 'streaming', 'setting' and grouping. Streaming means putting the children into ability groups- the same group for all subjects. This is utterly ridiculous IMO- a child who is brilliant at maths may struggle with reading. Luckily, I don't think this happens much in the UK, certainly not in primary school.
Setting is more common, where children might be in one set for maths, another for English, and then have their other lessons with their normal class teacher. Personally, I think this can be very useful, so long as the groups are reviewed regularly and there is a supportive ethos in the school. Children will know which group there are in (it's almost impossible to keep it a 'secret') so the teachers need to ensure that this doesn't impact on the children's self-esteem.
Ability groups within the classroom are used pretty much everywhere, and I don't see how we can get around that- you can't give the same work to all children. But again, there's ways of doing it so that it's a positive thing. Groups should be fluid, children should regularly have chances to work with others, they should (imo) be praised for effort and progress rather than achievement. And work should (of course) be interesting, challenging and valued for all groups.
Sorry, this has turned into a bit of a rant, but my point is: setting and grouping can be done very well or very badly, and it all depends on the overall quality of the school.