you are right, there is a bias. You can easily see it in the time between halvings:
- 3 years, 10 months, 19 days for the first epoch
- 3 years, 7 months, 12 days for the second epoch
- 3 years, 10 months, 2 days for the third epoch
all considerably shorter than the expected time of 3 years, 11 months, 29 days.
You can also take the time elapsed from genesis block and divide by the number of mined blocks so far. At time of writing the average block time is 9 minutes 31 seconds, so about 5% off from theoretical value.
There is really no easy way to compensate for that in a deterministic way as the generation time is a convolution of stochastic events (nonce finding) and non linear events (market price <-> hash rate available).
The hash rate in facts is not growing linearly but can go up and down by large amounts in relatively short amount of time depending for example of Bitcoin market value as well as unexpected events like weather catastrophes affecting large areas where miners are located or political facts such as China mining ban that recently (mid 2021) caused relocation of big miners to other jurisdictions with related down-time.
On top of that also consider that the algorithm used for difficulty adjustment is affected by a off-by-1 bug (by some definition of bug) where the actual time passed in creating the 2016 blocks is divided by 2015 instead of 2016, causing a tiny systematic drift.
In all cases both the bug and the probabilistic bias do not pose a problem for Bitcoin and are not and will not be addressed in any foreseeable future, according to my humble opinion.
Hope this answers your doubt.
-E-