How about something like
MATCH (a {user_id:1})-[:Friend*0..1]->()-[:Shout]->(b)
WITH b.post_id as post_id, b.post as post ORDER BY post_id desc
RETURN collect(post) as posts
Edit
Per comment, if you want to return the id of the node that -[:Shout]->(b)
you can add an identifier for the optional friend place
MATCH (a {user_id:1})-[:Friend*0..1]->(friendOrUser)-[:Shout]->(b)
WITH friendOrUser, b ORDER BY b.post_id desc
RETURN friendOrUser.user_id, b.post
Here friendOrUser
binds both the user a
and his friends.