El swap tiene la ventaja que es un espacio continuo (en unix donde dedicas una partición) o más o menos continuo (en windows es un archivo que puede fragmentarse pero se intenta mantenerlo en la menor cantidad de fragmentos posible) de manera que el disco no tiene que hacer tantas operaciones de seek para leerlo o escribirlo.
Igual como dices, tengo entendido que hay sistemas operativos que en el caso de páginas que solo contienen código de solo lectura (o que estan seguros que no fueron modificadas) en vez de escribirlo en el swap simplemente lo leen de vuelta del disco cuando sea necesario ahorrando la escritura al swap a cambio de capaz un poco maś de seek, pero eso son atributos de implementaciones específicas (leí en algun blog que alguna versión del kernel de windows o de linux hace eso pero no me acuerdo bien) no un caso general.
Además hay que tener en cuenta que si las páginas contienen datos o no es posible determinar si fueron modificadas con respecto de donde se cargo (o la representación en memoria es distinta de la de disco) o simplemente no se lleva control de desde donde proviene el contenido de cada página esa optimización no es posible. (no solo se requeriría saber de que archivo proviene sino exactamente de que offset dentro del archivo proviene una página). En el caso general esta optimización simplemente no es posible.