Is it recommended to have redundant foreign key columns?
I can find no fault with adding columns to tables that meet the requirements of your system.

It may in fact make some queries much faster to have the "redundant" columns present.  Take this example, which is pretty contrived, where you want to get a list of parents, and the names of the schools their children attend.  The first example, where parents are not linked directly to schools:

SELECT p.ParentName
    , s.SchoolName
FROM dbo.Schools s
    INNER JOIN dbo.Children c on s.School_ID = c.School_ID
    INNER JOIN dbo.Parents p ON c.Parent_ID = p.Parent_ID;


Versus the query where Parents are linked to schools, even though the link is "redundant" since each parents child already has the link:

SELECT p.ParentName
    , s.SchoolName
FROM dbo.Schools s
    INNER JOIN dbo.Parents ON s.School_ID = p.School_ID


Clearly, you'd want to do the second variant because (a) it's less complicated to understand the intent, and (b) SQL Server has to do less work, which is always a good thing.