This behavior is happening only if you clone a Bucket item, for all other items it works as expected and only the selected item will be cloned. In the case of buckets this is implemented by the processors defined in the pipeline
<buckets.cloneItemIntoBucket> from the config file
<processor type="Sitecore.Buckets.Pipelines.ItemOperations.CloneItem.RunCloning, Sitecore.Buckets"/>
<processor type="Sitecore.Buckets.Pipelines.ItemOperations.CloneItem.ProcessParentReference, Sitecore.Buckets"/>
I wouldn't recommend changing the default sitecore behavior unless it is really necessary as sitecore is running various functionalities on the bucketable items. To bypass the current implementation you would need to override the
RunCloning processor so that it doesn't clone the subitems or try to also look and override the
<uiCloneItems> processor implementation so that it calls the clone only for the current item.