I have never used expovariate, it might work but I worry about the "on average" part. for fMRI, you typically want it to be exact for *every* run, not converge to a given value for the average run.
What I do is define all of the jitters ahead of time as a list of ITI durations, random.shuffle the list for each scanning run, and draw from that list to get a specific ITI. This way, the total length of the run is always the same (= because its the same list for all subjects, and the whole list gets used). Specific ITIs are effectively random (random subject to the constraints of being drawn without replacement from a list of possible ITIs).
Note that for the best power / efficiency in event-related designs, you typically want to have a greater number of shorter ITIs, and fewer longer ones. To do this, just put more (or fewer) of a given duration into your list.
--Jeremy