What makes you think this to be the case? This is what copy does (cp source_file destination_file, abbreviated):
22674 stat64("destination_file", 0xbfad201c) = -1 ENOENT (No such file or directory)
22674 stat64("source_file", {st_mode=S_IFREG|0644, st_size=1418, ...}) = 0
22674 stat64("destination_file", 0xbfad1e18) = -1 ENOENT (No such file or directory)
22674 openat(AT_FDCWD, "source_file", O_RDONLY|O_LARGEFILE) = 3
22674 fstat64(3, {st_mode=S_IFREG|0644, st_size=1418, ...}) = 0
22674 openat(AT_FDCWD, "destination_file", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = 4
22674 fstat64(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
22674 fadvise64_64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
22674 mmap2(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f94000
22674 read(3, "file contents go here..."..., 131072) = 1418
22674 write(4, "file contents go here..."..., 1418) = 1418
22674 read(3, "", 131072) = 0
22674 close(4) = 0
22674 close(3) = 0
It doesn't do anything specific with any inodes, it just opens a file for reading (openat(AT_FDCWD, "source_file", O_RDONLY|O_LARGEFILE) = 3) and one for writing (openat(AT_FDCWD, "destination_file", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = 4), copies the content from source to destination and closes both files.Running a trace on install (install source_file destination_file, abbreviated) shows exactly the same trace with the following additions:
22795 fsetxattr(4, "system.posix_acl_access", "\2\0\0\0\1\0\6\0\377\377\377\377\4\0\0\0\377\377\377\377 \0\0\0\377\377\377\377", 28, 0) = 0
...
22795 chmod("destination_file", 0755) = 0
The only difference between cp and install is that the latter sets access rights while the former leaves this up to the user (and umask).