I'd guess it's a bug - no one tested a HDD that small. The code does a lookup of what the max partition size on a HDD can be, and that is calculated from the total size of the HDD. I'm guessing it is returning 16 MB for that. It can still make partitions larger than the max partition size, it just uses sub partitions to make it up. But since the first two partitions took up most of the HDD space, it's either failing to make sub partitions for the others, so bailing on that and leaving you with partitions that are only 16 MB in size, OR it's just setting the partition size to the max partition size and only using that because it's less than the smallest size on the list of sizes it uses. (Or maybe even a combination of those two.)
Probably.
Also, the base partitions aren't set at 2GiB (and the minimum size is 128MiB), they kind of go up in size as it creates them, from a list of set sizes (128MiB, 256MiB, 512MiB, 1GiB, 2GiB, 4GiB, 8GiB, 16GiB, 32GiB). It starts with __net, so __net gets 128MiB, __system gets 256MiB, __sysconf gets 512MiB, __common gets 1GiB. (This is if using wLE to format the HDD, other things can use different sizes.)
The code wLE is using to format a drive is in the PS2SDK, so this would be a bug in the sdk rather than wLE. I would expect it to create __mbr at 128MiB, __net at 128MiB (made up of 1 primary partition and 7 sub partitions all 16MiB), __system at 256MiB (made up of 1 primary partition and 15 sub partitions), __sysconf at 256MiB (it tries to create it at 512MiB but runs out of space so leaves it at 256MiB, so 1 primary partition and 15 sub partitions), and fail entirely to create the __common partition as there would be no space on the HDD left. But yeah, there shouldn't be any partitions smaller than 128MiB.