Well they're not really the same because host_time still advances even when the server is paused, whereas sv.time doesn't. sv.time is reset to 1 when a new server (i.e. map) starts, host_time isn't.
There is, IMO, no reason whatsoever to prefer host_time over realtime in any function that gets called after Host_FilterTime. They should both have the same value at that stage in execution. The only difference is that host_time advances in increments of (1 / host_maxfps.value) whereas realtime advances continuously.
The bigger problem is functions that use realtime instead of cl.time (like sky or water animations), or functions that use (cl.time - cl.oldtime) as a "frametime" (which may not be correct if the function didn't get called the previous frame - it should monitor it's own "oldtime" instead), or even functions which use host_frametime (they completely ignore the fact that timedemos might be running at a faster rate).
Each function that uses any kind of a "frametime" should have it's own timer, with it's own "oldtime", and base it's frametime on the difference between it's master time (which should be realtime, sv.time or cl.time) and it's oldtime. That way everything stays nice and consistent and running at the correct rate.