I know from experience that dialogs only show up to 50 lines.
I don't exactly know the maximum width you can display on a single line, but I think I read once that 3500 characters would be the maximum limit for dialogs.
Just create a global array (new LargeDialog[3000]

in your script and use that to form your big dialogs, make the size 3000 to be safe.
Each cell is 4 bytes large (each index can hold a 32-bit integer value), so that array is only 12 kilobytes in size.
Since pawn doesn't support dynamic arrays and you can't adjust the size of them during runtime, wasting 12 kilobytes of RAM shouldn't be an issue these days.
Computers have alot of memory since they went 64-bit, and servers have even more memory.
My home-pc has 12 gigabytes of RAM.
When you make the calculation, you'll see that such an array consumes about 1/10.000th of a percentage, or 0.0001% of my pc's total memory. You can have 1000 of those arrays and consume "only" 12 megabytes.
So don't worry about performance or optimizing it.
If you're concerned about performance, re-allocating arrays (or resizing them during runtime) has a bigger performance-hit compared to just creating a large enough array to begin with.
Some languages support resizing arrays during runtime and even keep the data inside them, unless the array is completely filled and you make it smaller, then the data in the excess indices will be dropped.
They do this by re-creating a new array of your desired size, then they copy the data and delete the original array.
Doing this frequently with large arrays has a much bigger impact on performance compared to creating an array large enough to hold all your expected data and never resize it.