Well you can get pretty much any frequency you want using the timers, or by bit banging.
However if the clock isnt stable you wont get a stable frequency.
I think the frequency is fairly stable but not accurate. It seems like the clock frequency used for millis() has some 'offset', and this offset is different for each Nano 33 IoT board.
I found a similar thread here: Nano 33 IoT millis() rate varies with USB power source
I don't know if adding an external 32.768KHz crystal can fix this. Any suggestions?