QGIS and most(?) R libraries use the GDAL open-source libraries to open gpkg files. Up until version 3.4.1, GDAL opened the underlying sqlite database of a gpkg file in locked mode and with so-called WAL journaling mode. This had as a side-effect technically updating the file when it was closed and the journaling terminated, even if no actual edits were made.
Version 3.4.2 of GDAL provides a new NOLOCK option (https://github.com/OSGeo/gdal/pull/5207) which is utilized by the most recent versions of QGIS (https://github.com/qgis/QGIS/pull/47098) to not exhibit the behaviour you describe. Note that at time of writing (April 2022), not all distributed builds contain both the updated QGIS 3.24 but are also compiled against the required new version of GDAL that is needed. And the fix seems to have introduced some gremlins for opening gpkg from network shares on Windows directly that are in queue to be fixed (https://github.com/qgis/QGIS/pull/48119).
Bottom line is that this is being fixed for QGIS, but may take a bit longer to percolate to your install. It may take shorter or longer to percolate into your R setup, with whatever underlying packages to both use the necessary version of GDAL as well as to actually use those new options in opening files.
Finally, even before this was implemented, I was personally able to use the following workaround in QGIS, for gpkg files containing only layers that never get updated. After combining these layers in this "reference" gpkg, use the file system to make that file read-only. Inside the QGIS project properties, mark those layers read-only as well. When the layers get opened by your QGIS project, harmless zero-length .gpkg-wal and .gpkg-shm files are created (see GeoPackage in QGIS: what are .gpkg-shm and .gpkg-wal files?). But when the gpkg file gets closed, the read-only file system setting prevents the file from being modified. There was nothing to change in it anyway, so no problem gets caused.