After having another look at your code, I think the problem is this line:
$select->from(array('s' => 'engine4_user_fields_search'),
array('s.field_7', 's.user_id'))
You're telling it to only select two columns (equivalent to SELECT s.field_7, s.user_id FROM ...
) which I don't think is what you intended? Your first example that you say works is selecting all columns from engine4_user_fields_search. You can just leave the second array off there to get all columns from that table.
Also, this:
$stmt = $db->query($select);
$result = $stmt->fetchAll();
Could be written as just:
$result = $db->fetchAll($select);
You can debug Zend_Db_Select
issues by simply echoing the select object, which will give you the generated query as a string:
echo $select;
And if you prefer to write raw SQL you can just pass that to the query function as a string:
$db->query("
SELECT * FROM engine4_user_fields_search as s
join engine4_user_fields_options as o
WHERE item_id = ? AND s.field_7+22 = o.option_id
", array($user_id['user_id']));