Measurements of periodtime more inaccurate when frequency gets lower

In errors there are several factors.
First is the resolution: usually an error of 1 sensor unit - e.g. in a signal measured by the ADC, when the signal is in the middle of two values, say in between 325 and 326, you can get either value. In your case that's an error of up to 4 us, as that's the resolution.
Then there's a proportional error, normally given as percentage. This proportion stays roughly the same over the scale, and in your case is caused mainly by timing errors: the combined errors of the Arduino clock and the frequency generator.
Sampling error. You take distinct samples, the resolution of which even if using an interrupt is limited by the speed of the processor. Every incoming signal has to wait for the next clock pulse for the interrupt to be triggered. That's 1/16th us, but it can by chance mean a difference of 4 us if the same clock pulse causes the microseconds timer to advance.
Then there's noise. Completely random additions to the signal caused by random events and EMI from sources ranging from nearby equipment to solar winds and meteorites. A frequency generator's output is also not perfectly regular. Wires are not connected perfectly.
Related, but more predictable are temperature effects. Both the Arduino clock and the pulse generator will be affected by the temperature of the room, causing both to run slightly faster or slower as temperature changes.
So there you go. Lots of sources of errors, some predictable, others not. Some that can be compensated for, some that can be suppressed, but not all. Some may be negligible (e.g. the temperature effects as long as you stay indoors in a room with normal, constant temperature). A 0.15% error with this level of equipment is about the best you can expect.