Hi,
I have found that if you setup an event with tickets and then subsequently delete all tickets the _EventCost meta data still retains a value and so calling tribe_get_formatted_cost or tribe_get_cost will return a value, even though the event is in effect now free.
A way around this could be to check if event has tickets before displaying event cost but really I think this value should be cleared once and event has no tickets. It must be getting updated when you add tickets, as it always shows the lowest price based on tickets for the event regardless of order of tickets created, so on ticket delete can you check and action then as well please.
Kind regards.
John