So in the 3.x series you can have proper document-start with the patch from
https://github.com/greasemonkey/greasemonkey/issues/1849
but you give up on GM_addStyle. In the current version (4.9) the script invocation lives in
https://github.com/greasemonkey/greasemonkey/blob/4.9/src/bg/execute.js
and proper document_start is in the TODO stage:
"""/*
This file is responsible for observing content navigation events and triggering
content script executions.
TODO: Make document_start execution time work as intended.
*/"""