First the formal part:
std_logic_arith is non-standard.
The very fact that std_logic_arith is placed in ieee library is probably in violation with copyright and the vendors that did it were not taken to the court only because copyright holder was lazy or had no resources to do it.
So by spreading std_logic_arith you likely support the violation of the low.
Now to engineering part:
Mixing signed and unsigned arithmetic in the same module with std_logic_arith is either very hard or may be impossible. Also the code is less readable because the reader should go to the header in order to figure out whether the arithmetic is signed or unsigned.
If you fill that numeric_std is harder to use that's a sign that you are not accustomed to the proper coding style.
As a rule, all signals/variables that are used in arithmetic statestments should be declared as signed, unsigned (for me, most of the time) or as integer ranges. std_logic_vector is used only for non-numeric signals and for interfacing with vendor libraries and with the outside world.
Start using numeric_std exclusively and after one month you wouldn't understand how you thought that std_logic_arith is somehow good.