Add word to permalinks does not transform the urls

Function get_the_category() returns array, that is why the condition $postcat->slug == 'section' is always false.

In its current form, your filter can change links to posts that do not have the section category. You should change the function to check the post for which get_permalink() was called, instead of checking the global $post.

add_filter( 'post_link', 'post_permalink_w_section', 10, 2 ); 

function post_permalink_w_section( $link, $post )
{ 
    if ( $post->post_type === 'post' && has_category('section', $post) )
    {
        $link = str_replace( $post->post_name, 'section/' . $post->post_name, $link ); 
    } 
    return $link;  
}