Unfortunately there's no way around that at this time. CB Privacy simply removes their rows from the row sets. It's not able to recount and redo paging to avoid this. Privacy at this time can't extend the userlist query to pre-filter them from the results avoiding this issue, but will be looking into fixing that in a later release as some of the privacy controls can be used in queries easily. The below Advanced filter for example should remove anyone with their profile set to Private and help with the issue some.
Code:
( ( SELECT COUNT(*) FROM `#__comprofiler_plugin_privacy` AS p WHERE p.`user_id` = u.`id` AND p.`asset` = 'profile' AND p.`rule` = 99 ) = 0 )
The below can be used if you only want to display users who set their profile to Public.
Code:
( ( SELECT COUNT(*) FROM `#__comprofiler_plugin_privacy` AS p WHERE p.`user_id` = u.`id` AND p.`asset` = 'profile' AND p.`rule` = 0 ) > 0 )