git diff is a porcelain (user friendly) command. For scripting purposes, you probably want to use the corresponding plumbing command git diff-tree.
You can get git diff-tree to output the full paths, relative to the git repository, using a combination of the --name-only, -r and --no-commit-id options.
Examples
Paths of files changed in the "last" (the HEAD) commit of the current branch.
git diff-tree --name-only -r --no-commit-id HEAD
Paths of files in the last commit on the main branch
git diff-tree --name-only -r --no-commit-id main
Paths of files of the last three commits on the main branch
git diff-tree --name-only -r main main~3
Paths of the files of the last commit under path src/
git diff-tree --name-only -r --no-commit-id main src/
Absolute paths of the files changed in the last commit on the current branch
git diff-tree --name-only -r --no-commit-id --line-prefix=`git rev-parse --show-toplevel`/ HEAD
Explanation
git diff-tree compares the blobs of two treeish objects.
A commit is a treeish object, which points to the objects in the repository root. Directories are also treeish objects whereas files are blobs.
Running git diff-tree HEAD will compare the blobs of HEAD and HEAD~1 and contain the difference in blobs of the repository root. To see all the changed files that are not in the root, we need to descend into the directory treeish objects. This is achieved using the -r (as in recurse) option.
Note that this allows one two compare arbitrary directories in arbitrary commits.
By default, if only one commit object is specified, it's compared to its parent. Ie, running git diff-tree HEAD is equivalent to git diff-tree HEAD HEAD~1. If you only specified one commit as the treeish object, the parent commit id is displayed. Using --no-commit-id gets rid of this.
git-diff-tree prints a lot of information we don't want (ids, permissions, whether it's an add, delete, modification). We just want the name, so we use --name-only.
If we wanted absoluted paths, we need to prefix all lines using something like git rev-parse --show-toplevel. This gets the absolute path of the repository, without the trailing /. So we add that.
--line-prefix=`git rev-parse --show-toplevel`/