You've rightly observed that, with both --bind and --rbind, you see directories under the bind mount.
The difference is that, with --rbind but not with --bind, you see the contents of other bind mounts under the bind mount.
As applied to your example, suppose for simplicity that /home/xyz/def and /home/xyz/mno are empty directories. Suppose further that you then use them as bind mounts, i.e., you use them as mount points in mount --bind or mount --rbind. This causes them to appear nonempty. Then, suppose you run:
mount --bind /home/xyz /home/abc
Then, /home/abc/def and /home/abc/mno both exist, but they appear empty, because you used mount --bind, which is nonrecursive.
In contrast, suppose you instead made /home/abc a bind mount by running this command:
mount --rbind /home/xyz /home/abc
Then, /home/abc/def and /home/abc/mno both exist and they appear nonempty--they have the contents of the /home/xyz/def and /home/xyz/mno bind mounts--because you used mount --rbind, which is recursive.
Here's a fully worked-out example:
ek@Gnar:~$ mkdir original
ek@Gnar:~$ touch original/a-regular-file
ek@Gnar:~$ mkdir original/a-directory
ek@Gnar:~$ mkdir parent-of-mountpoint
ek@Gnar:~$ mkdir parent-of-mountpoint/mountpoint
ek@Gnar:~$ sudo mount --bind ~/original ~/parent-of-mountpoint/mountpoint
ek@Gnar:~$ mkdir nonrecursive-other-mountpoint recursive-other-mountpoint
ek@Gnar:~$ sudo mount --bind ~/parent-of-mountpoint ~/nonrecursive-other-mountpoint
ek@Gnar:~$ sudo mount --rbind ~/parent-of-mountpoint ~/recursive-other-mountpoint
ek@Gnar:~$ tree -F original/
original/
├── a-directory/
└── a-regular-file
1 directory, 1 file
ek@Gnar:~$ tree -F parent-of-mountpoint/
parent-of-mountpoint/
└── mountpoint/
├── a-directory/
└── a-regular-file
2 directories, 1 file
ek@Gnar:~$ tree -F nonrecursive-other-mountpoint/
nonrecursive-other-mountpoint/
└── mountpoint/
1 directory, 0 files
ek@Gnar:~$ tree -F recursive-other-mountpoint/
recursive-other-mountpoint/
└── mountpoint/
├── a-directory/
└── a-regular-file
2 directories, 1 file
ek@Gnar:~$ mount | grep ~
/dev/sda2 on /home/ek/parent-of-mountpoint/mountpoint type ext4 (rw,relatime)
/dev/sda2 on /home/ek/nonrecursive-other-mountpoint type ext4 (rw,relatime)
/dev/sda2 on /home/ek/recursive-other-mountpoint type ext4 (rw,relatime)
/dev/sda2 on /home/ek/recursive-other-mountpoint/mountpoint type ext4 (rw,relatime)