The OS yes, but the RPI3 only comes in a 1GB flavor which supoorts a 64 bit OS, there is no such thing as a 4GB RPI3. (unless you build it yourself, which might be possible, with the right RAM modules, if such exists, I suspect)
You should be able to expect to run a 1 GB application (minus maybe 32 or 64 MB for the OS) on a machine wth 1 GB RAM. But in a 32 bit address space that is close enough to 4 GB (or 2 GB for user space) that all kinds of undesirable things start to happen:
- a random pointer (or a malicious one) is likely to point to actual in-use data
- a conservative garbage collector won't be able to tell that integers aren't poointers
- if a malloc()-using application is repeatedly allocating and freeing objects of even a few dozen KB, let alone MB, then the address space can easily become so fragmented that it's not possible to allocate a large object even though there is plenty of space available.
Running a 64 bit OS solves all these problems.
The only downside is that pointers are twice as big in RAM, and also registers saved on the stack by function calls are twice as big. This can be a real problem for programs that use only a few KB of RAM, but programs that use 1 GB of RAM seldom use a significant percentage of that for stack or pointers.