All of the following from vague memory....
Its not the OS itself, but the file format as defined by Apple. (afaik) You can't put debug info (at least dwarf) directly into it. If you don't have a dbg file then the .o files that were used in compiling must be around.
In either case, on other OS where file formats allow the inclusion, you still get the same size => i.e. the app with debug info is much much larger -> just in one file.
Mind that debug info contains much more than line numbers. It usually also contain function names, and variable names, and all you need for a full debug info. In theory that wouldn't be needed. But afaik its not implemented to separate it (but maybe there are some tools to cut certain parts of dwarf)...
In any case, are you shipping a binary for an open or closed source? Because if the latter, then you may not want to reveal as much info as the above describes.
Even if you don't use lazarus, I am pretty sure (though I don't know the exact commands) that lldb can resolve the addresses for you. (I know gdb can, and the Lazarus IDE can, at least on non Mac, but IIRC on Mac too).
Then you would generate your exe with dbg file.
But you wouldn't ship the dbg.
When someone sends a trace, you use lldb + the dbg file (must be the exact matching for the version that printed the trace) and resolve addresses.