Мне больше нравится System.Timers.Timer для серверных вещей, поскольку он вызывает событие и поддерживает ручной сброс (т. Е. Вы можете предотвратить его повторный запуск до тех пор, пока не закончите обработку прошедшего события). System.Threading.Timers не поддерживает ручной сброс - он просто срабатывает на интервале, что хорошо для одних вещей, плохо для других. System.Timers.Timer дает вам выбор. Другие типы таймеров не подходят для сервисной работы.
В большинстве случаев выбор между этими двумя весьма незначителен.