Вы всегда выбираете первые 6 статей, потому что отображаемые статьи поступают из:
$articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->get()->take(6);
, а не из запроса разбивки на страницы.
Нет необходимости отделять запрос для ссылок и запрос для фактических статей. Вместо:
$articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->get()->take(6);
$links = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->paginate(6);
Вы можете сделать:
$articles = Article::whereIn('id',$idArticle)->where('status','enable')->orderby('created_at','desc')->paginate(6);
и по вашему мнению:
<div class="masonry ">
@foreach($articles as $article)
@include('components.article-or')
@endforeach
</div>
<div class="text-center" style="margin-top: 5%">
{{ $articles->links() }}
</div>