It cuts off because you have the outer if -- else conditions and then inside the while loop you have an if with no else so the remainder of that drops through the last "> 452 if" is lost without being sent to the channel.
You should be able to fix it by removing the outer if else and just letting the script message the remaining text when it drops out of the while loop.
alias msg {
var %channel $1, %x 1, %msgnum 1
tokenize 32 $2-
while (%x <= $0) {
if ($len($($+($,%msgnum,-,%x),2)) > 452) {
msg %channel $($+($,%msgnum,-,$calc(%x - 1)),2)
var %msgnum %x
}
inc %x
}
msg %channel $($+($,%msgnum,-,$calc(%x - 1)),2)
}