One of the biggest problems with replacing a hard drive on an active production server is that doing so will trigger a rebuild. Especially if you are using RAID5, and especially if you are using large drives, forcing a rebuild creates a very significant risk of an unrecoverable failure. The risk of losing the array during a rebuild is far greater than the risk involved in leaving a 3-year-old drive in place.
Taking an extreme example, if you successively replace every disk in a 6-disk RAID5 array comprised of 2TB disks, your theoretical risk of an unrecoverable read error during one of the rebuilds is in the neighborhood of 58% (according to my napkin math; please do your own and compare notes). In other words: your "preventive" disk replacement is, in effect, nothing less than an act of sabotage.
The only time when I would consider refreshing drives in an old server would be in the course of "refurbishing" it, e.g. after having been decommissioned from one task and before putting it back into service with a new role. Even at that point, capacity and performance requirements would be far more important than the age of the drives.