My friend who's a native Chinese speaker told me this "今晚又要加班". I wonder why he used 又 instead of 再 since (as far as I know) 又 indicates a repetition of an action in the past, while in this case, I don't think he refers to the past because he is just about to work overtime again tonight (cmiiw). Could someone please explain to me?
Although he is not referring to a past action, it is a recurrent past action that is going to happen again. The idea of a pattern firmly established in the past, plus the emotional colouring, means that 又 is more appropriate than 再 here.
There's some contention about whether 了 is required after 又. I think with 要, as it's not as much an action verb (in this context) as some other verbs, 了 is not as required as in other contexts.
@Michaelyus already gave a good answer. Here is my way to interpret it.
Usually, we say 又, meaning something happened or will happen one more time(repetition). For example, 你又来了 implies that you have come here before and this is not your first time.
So， "今晚又要加班" implies that you have worked overtime before and tonight you will work overtime again.