Calendar Views: Upcoming or Recent
FYI, here is how I solved it. Thanks Rock, for the step in the right direction!

Overview: Used a custom module that creates a block that displays one of two view displays.


Programmatically created a view (hook_views_api, hook_views_default_views) with two displays: one that shows upcoming events (ascending order, up to 4 items without a pager), and one that shows the last four events in the database (descending order, 4 items without a pager)
Programmatically created a block (hook_block_info) that displays (hook_block_view) one of the two view displays based on the number of results in the "Upcoming" display ( $results = views_get_view_result('view_id', 'display_id');). 
Created a custom template file (views-view-unformatted--view-id--display-id.tpl.php) for the second display, which reverses the order of results so that they are still displayed with earliest date first.