I think the ability to abstract problems is fundamental for any good programmer. However I don't think this is a unique requirement for programmers - physicists, chemists and mathematicians alike need high skills in abstraction. In all of those sciences you need to break down an arbitrarily complex problem down into simpler ones and this requires a way of thinking that might be quite different from other people.