Send Midi Clock Issue

This happens because the 24 MIDI messages are not send on a consistent frequency. The intervals are not being respected as in this an example. When the interval isn't respected I understand that the BPM value increases or decreases.

the frequency at which they are sent is not ruling the received BPM that is converted etc.. most midi-sync receivers take the 24th and calculate from there, (some just calculate back to the time before at any given time) other midi messages are passed as well and the line can get a little clogged, but midi sync accounts for that. Many DAW's fluctuate a lot also when they are sending sync to each other, and since we are taking milliseconds here it is not something that will be disturbing to the ear (in fact it humanizes the whole thing a bit)

But when I try it with a high frequency, like 290 BPM (that is 4.8333Hz or actually other frequencies that are float), the compare match register value calculated is "17242,52". But then, the BPM loose accuracy. The BPM values goes from 288.5 to 291.5.

I thought you were making a "midi sync tapper", can you tap that fast ? that accurately ?Serial.begin(96000);is this your midi-port ? then that is not the correct baud-rate.
Anyway, as long as all you want to send is the midi-sync, then using a timer & interrupt is totally cool, but if you start sending different midi commands as well, you will actually be better of using millis() and the modulo off elapsed time and a counter(for sync's sent per beat), since you don't want any multi-byte commands to accidentally get broken up. Don't worry about the accurate frequency of the sync commands being sent the receiving end will anyway take an average over some period of time.
Most DAW's don't go into sync unless the transmitter send a 'play' or 'record' command btw.