Aligning page elements with window size
I read that function expressions aren't "hoisted"


Yes. See var functionName = function() {} vs function functionName() {}.


  so I can't get the proper values on $(document).ready


Why that? Unless the assignment to sameHeight did happen after the $(document).ready call, you can easily get the function.


  but I'm not sure how I could declare them with out making the code really messy and repetitive.


You already have declared them, they are hoisted and everything is fine. However, even if you did use function expressions:

var captHeight = function() {
    …
};
var sameHeight = function() {
    …
};
$(document).ready…


then everything would have been fine. Notice that, as @Flambino mentioned already in the comments, you can shorten the part where you install the event listener to

$(document).ready(sameHeight);

$(window).on('resize', sameHeight)
         .on('scroll', sameHeight);