You are returning the shortcode content as a big string, your function get_job_listing_categories
is not properly being called.
Also i would recommend use PHP output buffering which is great for WordPress shortcodes.
Try below code:
function jobsform_function($atts) {
ob_start();
?>
<form class="home-job-search" method="GET" action="https://website.com/jobs/jobs/">
<div class="home-keywords">
<input type="text" id="search_keywords" name="search_keywords" placeholder="Enter Keywords" />
</div>
<div class="home-categories">
<select id="search_category" name="search_category">
<?php foreach (get_job_listing_categories() as $cat): ?>
<option value="<?php echo esc_attr($cat->term_id); ?>">
<?php echo esc_html($cat->name); ?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="home-search-button">
<input type="submit" value="Search" />
</div>
</form>
<?php
$output = ob_get_contents();
ob_end_clean();
return $output;
}
add_shortcode('jobsform', 'jobsform_function');