Why use two stop UGA codons instead of one in the spike protein mRNA for the BioNTech/Pfizer SARS-CoV-2 vaccine?
The two stop codons are obviously to prevent read-through of the termination codon.  Why this should be necessary is not clear to me, but the following may be relevant:

The synthetic mRNA differs from the natural mRNA in a particular respect that is easier to explain with reference to the transcript map of the virus, below.

The two ORFs 1a and 1b are translated directly from the virus RNA as polyproteins, which are subsequently cleaved, but the proteins at the 3′ side of the viral RNA are transcribed into a series of nested mRNAs, each starting from a different 5′ position immediately preceeding the gene that will be translated. These mRNAs also retain RNA corresponding to the remaining genes (coloured grey, and not translated because of the monocistronic translation of eukaryotic mRNA) and the common 3′ polyA tail. The synthetic mRNA for the spike protein (S) lacks the RNA for the non-translated genes, and has the polyA tail near to the stop codon. Hence the secondary structure near the stop codon in the synthetic mRNA may well differ from that in the natural mRNA and possibly influence the likelihood of readthrough.

The stop codons used in this artificial mRNA are not UGA but 1-Me-ΨGA, as U is replaced by 1-Me-Ψ (1-methyl-pseudouridine*) in they synthetic mRNA to prevent degradation. As the anticodon is recognized by a termination factor — not a tRNA anticodon — the interaction with 1-Me-ΨGA may possibly be poorer than for UGA.


Footnote
*The structural relationship between uridine, pseudouridine and 1-methyl-pseudouridine is shown below. The NH and CO involved in base-pairing are similar in each case. 
The sequence is generally written with Ψ, rather than 1-Me-Ψ, for compactness.