Yes, because Chrome's architecture forces extensions to do this, ironically in the name of security.
Normal extension code can access a page's DOM but it cannot interact with any scripts on the page.
If you want your extensions to interact with the page's JS, the only way is to play man-in-the-middle and inject your own JS as if it was loaded by the page.