You could take the language known as Swift and rename it to "Swift with ARC". You could then create a new language named "Swift with GC" with exactly the same syntax, but with fewer guarantees about when objects are deallocated.
In Swift with ARC, once the reference count is 0, the object will go. With garbage collection, as long as you have a weak reference, you could assign that weak reference to a strong reference to "recover" the object. (In Swift, once the reference count is 0, weak references are nil); that is a major difference.
And of course Swift with ARC guarantees that killing the last reference count will deallocate the object immediately. For example, you might have a FileWriter class, where you are not allowed to have two instances writing to the same file in existence at the same time. In Swift with ARC you could say oldWriter = nil; newWriter = FileWriter (...) and you would know that the new FileWriter is only created after the old one is deleted (unless you kept another reference around); in Swift with GC this wouldn't work.
Another difference is that in "Swift with ARC", objects that are only referenced through strong reference cycles, but not actually reachable, are guaranteed to be not deallocated.