There are two issues.
1) The Timer component counts the 12MHz clock from ZERO to 48000. So, the period of the timer is 48,001 If you want to get a 48,000 cycle period result, 47999 should be set to the period value.
2) In your project, you are using the 48MHz IMO as the HFCLK clock which is used as the source clock of the 12MHz clock.
The accuracy of the IMO is +/-2%. So, the accuracy of the 12MHz is +/-2% too.
If you want to generate more accurate Timer interrupt, Use the External Crystal Oscillator (ECO) clock as the HFCLK.
Now, You can use more accurate 24MHz clock as the HFCLK.
It works well.
I understood about clock system