Abstraction always improves things.
For instance, you have a dynamic array that you add things to and you need to deal with resizing it.
Non-abstract route: everywhere in the code you need to add something to the array, you write a few lines that checks the current size and expands the array as necessary.
Abstract route: You write a function called "AddThingToArray" and put the array expanding logic in one location.
I'd never, ever allow the first option to ship out the door.
What definition of "abstraction" are you using here?