Depending on the fade effect I'm looking for and what's easiest at the time I use: shaders, colour, transparency, scaling and position.
To control the transition I'll use some sort of maths. It means having to attach some variables to the object / sprite / text in order to do this, mainly a start time and the length of time for the transition, but I don't find this a hassle. What I like about this method is that I can use all sorts of formulas, very easily mix together affect, such as a fade and scale, and get some nice results.
I've only had a brief go a tweens and I felt it wasn't any less or more difficult that writing my own code. They have the advantage of doing the maths for you and I believe they take care of any frame rate issues automatically but I might be wrong on that.
I think this is one of those areas where getting to grips with as many methods as possible is really useful. It gives more freedom to do what you want, gives more options and prevents your games having an identi-kit / copy-cat feel to them.