So this turned out to be the problem:
After running using WP_DEBUG on the live site it turned out $this was not defined in the following line:
public function __construct(){
add_action('init', function(){
add_shortcode('bbit', array($this, 'shortcode_handler'));
});
}
shortcode_handler is a non-static function here, and this code was all called in a static context. It seems there are some differences in my local XAMPP configuration and the servers configuration. I fixed it by removing the old code and adding the following code outside of the class:
add_action('init', function(){
add_shortcode('bbit', array('BBIT_ShortCode', 'shortcode_handler'));
});
After that I just needed to make the shortcode_handler method static and there was a fix.