Adding dt like that isn't actually perfectly accurate, it will accumulate small errors over time due to the nature of floating point addition.
Construct 2's runtime does its timing with higher precision to avoid that issue, so 'every 1 second' should actually be more accurate than adding 1 to dt every second. You should also just round the returned time because a game running at 60 fps only runs a tick every 16ms which means the time can be anything within 16ms of its intended time.
The problem with accuracy getting worse over time with 'Every X seconds' was actually a small bug - I've fixed it for the next build.