It should be. You can of course run out of memory during the time when the GC was disabled, but when you re-enable it it will also collect memory that was allocated during that time.
wrt. the manual memory management, you can always help the GC a little by adding calls to CUDA.unsafe_free! where possible. This will also help if you’re already disabling the GC (because memory can be reused more quickly).