After debugging a long time even I got the solution regarding pagination issue
Basically, In WordPress, you can't have a PAGE and a CUSTOM POST TYPE with the same name. If you do, the permalink rewrite rules will get confused and trigger a 404.
I finally found a solution.
Disable the redirect canonical function with:
add_filter( 'redirect_canonical', '__return_false' );
And fix the 404 error that results from disabling the redirect canonical with this suggestion
When faced with this same requirement I opted to use a direct MySQL call to calculate which page the current post is on without retrieving and looping every post in this post_type. I went this route because I discovered it is much faster when working on a site with thousands of posts.
This approach may also be put inside a function/method and determined from ...
Seems to be related to: WordPress stripping out "page" query parameter with 301 redirect.
See Make WordPress Core ticket 50976:
"We understand that it may be annoying for themes and plugins authors to fix their usage of this variable, but it would introduce a way more issues if it was changed on WordPress Core side. It's objectively better to ...