Q:

Usage of enclosing braces {} as arguments to commands and their options

Examples
I've recently found examples of using pairs of enclosing braces {}, with nothing in between the opening and closing braces, as arguments to commands and even to their options:
cat foo | xargs -I{} echo {}
find . -size 0 -exec rm -i {} \;
No Documentation
My problem is that I cannot find a documentation in the GNU Bash Manual that describes the usage of {} in such context as in the examples above.
I do not think it is a parameter expansion, because a dollar sign must precede the enclosing braces in a parameter expansion as in ${}.
It cannot be a brace expansion either, because it takes the form of {x..y[..incr]}, where x and y are not optional.
It also cannot be a command grouping either, because {} is used as arguments.
Questions

What does a pair of enclosing braces {} even mean, in general, as an argument to any command that accepts it?
Where can I find a documentation that describes the usage of {} as arguments?

A:

These curly braces are left alone by bash; they belong to find and xargs, respectively, and are described in their man-pages.
man find

-exec command ;
Execute command; true if 0 status is returned.  All following arguments to find are
                taken to be arguments to the command until an argument consisting of ; is encountered.  The string {} is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it  is
                alone,  as  in some versions of find.  Both of these constructions might need to be
                escaped (with a \) or quoted to protect them from expansion by  the  shell.   See
                the  EXAMPLES  section  for examples of the use of the -exec option.  The specified
                command is run once for each matched file.  The command is executed in the starting
                directory.    There  are unavoidable security problems surrounding use of the -exec
                action; you should use the -execdir option instead.
-exec command {} +
This variant of the -exec action runs the specified command on the selected  files,
                but  the command line is built by appending each selected file name at the end; the
                total number of invocations of the command will be much less  than  the  number  of
                matched  files.   The  command line is built in much the same way that xargs builds
                its command lines.  Only one instance of {} is allowed within the  command.   The
                command  is  executed in the starting directory.  If find encounters an error, this
                can sometimes cause an immediate exit, so some pending commands may not be  run  at
                all.  This variant of -exec always returns true.
-execdir command ;
-execdir command {} +
Like  -exec,  but the specified command is run from the subdirectory containing the
                matched file, which is not normally the directory in which you started find.   This
                a  much more secure method for invoking commands, as it avoids race conditions during resolution of the paths to the matched files.  As with the  -exec  action,  the
                +  form  of  -execdir  will build a command line to process more than one matched
                file, but any given invocation of command will only list files that  exist  in  the
                same  subdirectory.   If you use this option, you must ensure that your $PATH environment variable does not reference .; otherwise, an attacker can  run  any  commands  they like by leaving an appropriately-named file in a directory in which you
                will run -execdir.  The same applies to having entries in $PATH which are empty  or
                which  are  not  absolute  directory  names.  If find encounters an error, this can
                sometimes cause an immediate exit, so some pending commands may not be run at  all.
                The  result  of the action depends on whether the + or the ; variant is being used;
                -execdir command {} + always returns true, while -execdir command {} ; returns true
                only if command returns 0.

man xargs

-I replace-str
Replace occurrences of replace-str in the initial-arguments with  names  read  from
                standard  input.   Also,  unquoted blanks do not terminate input items; instead the
                separator is the newline character.  Implies -x and -L 1.
-i[replace-str], --replace[=replace-str]
This option is a synonym for -Ireplace-str if replace-str is specified.  If the replace-str argument is missing, the effect is the same as -I{}.  This option is deprecated; use -I instead.

Edit: and here WHY bash ignores those curly braces:
man bash

{ list; }
list  is simply executed in the current shell environment.  list must be terminated with a newline or semicolon.  This is known as a group command.  The return status is the exit status  of
                list.   Note  that unlike the metacharacters ( and ), { and } are reserved words and must occur
                where a reserved word is permitted to be recognized.  Since they do not  cause  a  word  break,
                they must be separated from list by whitespace or another shell metacharacter.

For emphasis: list must be terminated with a newline or semicolon.

