You can do this with FFmpeg like so:
ffmpeg -i input.avi -metadata key=value -codec copy output.avi
Example:
$ du -h test.mov
27M test.mov
$ ffprobe -loglevel quiet -show_format out.mov | grep title # nothing found
$ ffmpeg -loglevel quiet -i test.mov -codec copy -metadata title="My title" out.mov
$ du -h out.mov
27M out.mov
$ ffprobe -loglevel quiet -show_format out.mov | grep title
TAG:title=My title
See the documentation for -metadata and on stream copying for more information.
Note also that not all formats allow setting arbitrary metadata, for, e.g., Quicktime doing -metadata title="my title" does what you’d expect, but -metadata foo=bux does nothing.