Grazie per la risposta, quello che dici in effetti è la causa, ma ancora non riesco a trovare una soluzione. Mi spiego: quando si attiva il box modale, la classe .modal-open {overflow: hidden;} sul body nasconde la scrollbar della pagina, mentre un'altra ne viene aggiunta sopra l'overlay. Questa seconda scrollbar viene considerata parte della larghezza della pagina stessa, ed infatti lo script che genera il box modale aggiunge 17px di padding destro al body direttamente in linea, in modo da compensarne lo spazio occupato.
Purtroppo nella pagina in cui sto lavorando solo due elementi subiscono lo spostamento dei contenuti (un box di testo con posizione assoluta calcolata in percentuali per essere responsiva, ed un immagine fixata sulla sfondo ed allienata a destra), e se provo a rimuove le regole css mi devo tenere due scrollbar affiancate, ma è orribile e disfunsionale.
Il problema è comunque dell'overlay posto sopra il body. Una possibile soluzione sarebbe che la scrollbar aggiunta sopra l'overlay funzionasse come quella originaria, cioè mantenesse il proprio spazio al di fuori del viewport, ma non so se è possibile o come fare.