What is the difference between using hook_views_pre_render() or preprocess functions?
Behind the scenes they're pretty different (one is a hook provided by Views, the other part of the theme system). Practically speaking, as a module/theme developer you'll see very little difference. What you can do in one you can do in the other, and hook_views_pre_render() can even be implemented in a theme.

I'd say just pick the one which offers you the most intuitive/simple way to make the changes you need to. If the theme preprocess requires more complex logic/code use the pre_render hook, and vice versa.