На самом деле можно обойтись и без всяких компенсаций и оборачивающего блока. Вот пример моей реализации модального окна (код для реакта, но суть, думаю, понятна будет) https://github.com/y-components/y-modal/blob/maste... Кстати, еще нужно учесть: есть ли на странице скроллбар или нет, иначе при overflow: hidden будет скачек контента.
Также можете посмотреть реализацию модального окна бутстрапа.