ffmpeg seeks accurately when transcoding. [1] Cutting on non-keyframes when stream copying results in broken video until the next keyframe.
Handbrake does have a CLI. [2] I haven't used it and I'm not sure what advantage it might have over ffmpeg. I personally use mkvmerge or ffmpeg for my muxing/cutting and VapourSynth for encoding.
[1] https://trac.ffmpeg.org/wiki/Seeking
[2] https://handbrake.fr/docs/en/latest/cli/cli-options.html