I've pinned down the problem:
Problem #1: Ads don't display when visiting a discussion page directly.
Cause: It seems Flarum displays the content and runs the "show ads" script from google before the script is even ready, so it must be run after verifying the script is ready to go.
Problem #2: Ads don't update on page change
Cause: This one was harder, the header isn't refreshed when the page changes so the element isn't redrawn, not only that but google ads are essentially redraw proof to prevent people from refreshing ads on the same page. The solution was manually redraw the elements with jquery so Google detects the URL change and sends a new ad over.
I am waiting for my adsense approval, as soon as I get it I will fully test it and PR it to the main repo.