The best approach is still to use coupons to give to users. You can generate them automatically within CBSubs SQL Actions of your plans using database queries. Example queries as follows.
Code:
INSERT INTO `#__cbsubs_promotions` (`name`, `promotion_type`, `coupon_code`, `coupon_code_cbfield`, `coupon_description`, `discount_type`, `rate`, `currency`, `amount`, `stages`, `rate_cbfield`, `currency_cbfield`, `amount_cbfield`, `amount_cbfield_deduct`, `priority`, `exclusive_within_priority`, `show_also_zero_values`, `applies_to_first_payment`, `applies_to_recurrings`, `applies_to_registrations`, `applies_to_upgrades`, `applies_to_renewals`, `max_uses_total`, `max_uses_per_customer`, `buyer_geo_zone_id`, `applies_to_business_consumer`, `applies_to_items`, `plans_applied_to`, `plans_sametime_required`, `cal_proratatemporis`, `cal_periodmissed`, `cal_fullmissed`, `cal_maxdperiodsmissed`, `cal_catchuppromotion`, `cond_1_operator`, `cond_1_plans_required`, `cond_1_plans_status`, `cond_1_purchase_ok`, `cond_1_date_1`, `cond_1_date_cbfield_1`, `cond_1_value_1`, `cond_1_dates_diff_a`, `cond_1_dates_diff_b`, `cond_1_date_2`, `cond_1_date_cbfield_2`, `cond_1_value_2`, `cond_2_operator`, `cond_2_plans_required`, `cond_2_plans_status`, `cond_2_purchase_ok`, `cond_2_date_1`, `cond_2_date_cbfield_1`, `cond_2_value_1`, `cond_2_dates_diff_a`, `cond_2_dates_diff_b`, `cond_2_date_2`, `cond_2_date_cbfield_2`, `cond_2_value_2`, `published`, `start_date`, `stop_date`, `viewaccesslevel`, `usergroups`, `user_ids`, `ordering`, `cssclass`, `owner`, `override_plans_display`, `plan_name_descr_display_type`, `plan_name_display_text`, `plan_description_display_text`, `plan_price_display_type`, `plan_price_display_saletext`, `plan_price_display_text`, `params`, `integrations`) VALUES
('Family Discount for [username]', 'coupon', '[user_id]-FAMILY-DISCOUNT', 0, '0', 'percentage', '100', '', '0', '', 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 5, 1, 0, 'A', 0, '', '', 0, '1M', 1, '', 1, '', '', '', 0, '', 0, '', '', '', '', 0, '', '', '', '', 0, '', 0, '', '', '', '', 0, '', 1, '0000-00-00', '0000-00-00', 1, '1', '', 1, '', 0, 0, 0, '', '', 0, 'SALE!', '<p>[NORMAL_PRICE]</p>', '', '');
The above query for example will insert a coupon with the coupon code "USERID-FAMILY-DISCOUNT", which gives 100% off their purchase of anything. It can be used 1 time per user and has a total of 5 uses so it can give 5 users 1 free purchase.
The alternative is maybe a combination of CB Query Field and CB Auto Actions. For example the user could supply an email address to a field for the other users they want to give free subscriptions to when/if they register. You would then create a database query for the CB Query Field to search all _comprofiler rows to see if they've have their email address specified in such a field. If they have then return a 1; if not return a 0 in your SELECT. Now you can use this to condition your CB Auto Action as [cb_queryfield] Equal To 1 and if that's the case give them a subscription using the CB Paid Subscriptions action. You then may want to add another query field to check if they already have a subscription or not, etc..
Both methods are pretty complicated to get going. It's planned to actually add a family subscription feature to CBSubs it self as an integration as it has been requested a lot, but I have no idea when that'll happen.