going to do something can be translated as planen, etw. zu machen, vorhaben, etw. zu machen. So you could translate it as follows:
weil er plante, am nächsten Tag nach Berlin zu fliegen
weil er vorhatte, am nächsten Tag nach Berlin zu fliegen
Notice though, that the es is obsolete and even wrong in your sentence. The expletive es is only allowed, if vorhaben has no object. But here, the subordinate clause is the object of vorhaben, rendering the use es obsolete.
Your construction with würde is also perfectly fine. From all options, I would call this the one with the highest register. Depending on context, it could be too high, sound overly formal or even a little snobby, but those judgements depend heavily on context and audience:
weil er am nächsten Tag nach Berlin fliegen würde
A little less formal, but also perfectly fine:
weil er am nächsten Tag nach Berlin fliegen wollte
Your last option
weil er am nächsten Tag nach Berlin geflogen ist
is also fine. Technically, you lose some temporal order of the events in translation. But unless it is relevant that we are talking about his state of mind at the point in time he bought the pizza, this is how most people would naturally say it in German. As German has no construction analog to the going-to construction, it is most pragmatic to not make this differentiation unless it really matters. One such scenario would be if we would describe the case that he didn't actually fly in the end (He only bought one pizza, because he was going to fly to Berlin in the morning. But when his flight got cancelled, he didn't know what to have for lunch that day.). In that case, you cannot use this translation.
To elaborate on this a little more: There are three points in time: A) The time of buying the pizza, B) The time of flying to Berlin, C) The time of speaking.
The going-to construction says something about an event at point 1, referring to a state of mind "he" had at A, but thinking about B, which then was in the future (in relation to A). In the going-to construction, it is not even clear yet, whether he actually flew to Berlin in the end. Actually, the sentence contains no information about the relation of B and C. B might even be later in time than C.
The German sentence weil er am nächsten Tag nach Berlin geflogen ist translates to because he flew to Berlin in the morning. So, you can understand what is lost in this translation by comparing this English sentence with the original, going-to sentence.
The simple past construction does not reflect the relations of times as they are conceptualized in the going-to construction. In the simple past construction, all times are defined in relation to C (and they are both past).
Notice that you cannot really translate the next day with morgen, because this would mean "tomorrow". But this would be tomorrow in relation to C, while what is meant is tomorrow in relation to B ("the next day"). This is not really a problem with the translation though, as it would be just as wrong in English to use tomorrow.