Performance is not a significant concern, since all three callbacks have very little code, and they execute only once per second. Rather, you should aim for clarity. In my opinion, Version 1 is simplest and easiest to follow.
All three techniques suffer from the same weakness with window.setInterval(…, delay):
delayThe time, in milliseconds (thousandths of a second), the timer should delay in between executions of the specified function or code. If this parameter is less than 10, a value of 10 is used. Note that the actual delay may be longer; see Reasons for delays longer than specified in WindowOrWorkerGlobalScope.setTimeout() for examples.
In particular, the interval may be throttled to 10 seconds for long-running scripts in background tabs, or the callback may be delayed if the JavaScript engine is busy executing other tasks. Furthermore, the whole machine might go to sleep.
Rather, you should check the time difference with every tick. (As a side benefit, this should help address your concern about casual Web Inspector tampering.)
Use destructuring assignment to write more meaningful names than unit[0] and unit[1]. Note that in for (unit of timeIntervals), you neglected to localize unit in any way, so it's global.
The tick function should probably be declared as const rather than var. I'd also prefer to use let rather than var, as better software engineering practice.
Also, as better practice, use jquery.text() rather than .html(), if you know that the content is text without HTML markup.
const timeIntervals = [
["day", 86400000], // milliseconds
["hour", 3600000],
["minute", 60000],
["second", 1000]
];
const tick = (start) => () => {
let elapsed = Date.now() - start;
for (let [unit, ms] of timeIntervals) {
$("#" + unit).text(Math.floor(elapsed / ms));
elapsed %= ms;
}
};
let timer = window.setInterval(tick(Date.now()), 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<p>
<span id="day">0</span> days,
<span id="hour">0</span> hours,
<span id="minute">0</span> minutes,
<span id="second">0</span> seconds
</p>